Zadaniem funkcji open jest:
Oto funkcja open dla dzojstika z jadra 2.4.7 W tekscie funkcji zaznaczono, ktore linie realizuja odpowiednie zadanie funkcji open (licznik uzycia utrzymuje jadro):
static int joydev_open(struct inode *inode, struct file *file)
{
struct joydev_list *list;
int i = MINOR(inode->i_rdev) - JOYDEV_MINOR_BASE; /* punkt 4 */
if (i >= JOYDEV_MINORS || !joydev_table[i])
return -ENODEV;
if (!(list = kmalloc(sizeof(struct joydev_list), GFP_KERNEL)))
return -ENOMEM;
memset(list, 0, sizeof(struct joydev_list));
/* punkt 5 */
list->joydev = joydev_table[i];
list->next = joydev_table[i]->list;
joydev_table[i]->list = list;
file->private_data = list;
if (!list->joydev->open++) /* punkt 2 */
if (list->joydev->exist)
input_open_device(&list->joydev->handle);
return 0;
}
Zadaniem funkcji release jest: