next up previous contents
Next: Close Up: Treiberkonzepte unter UNIX Previous: Open

Algorithmus zum Eröffnen eines Gerätes

algorithm open     /* for device drivers */
input:  pathname, openmode
output: file descriptor
{
   convert pathname to inode, increment inode reference count,
   allocate entry in the file table, user file descriptor, as 
      in open regular file;

   get major, minor number from inode;

   save context (algorithm setjmp) in case of long jump from driver;

   if (block device)
   {
      use major number as index to block device switch table;
      call driver open procedure for index: 
         pass minor number, open modes;
   }
   else
   {
      use major number as index to character device switch table;
      call driver open procedure for index: 
         pass minor number, open modes;
   }

   if (open fails in driver)
      decrement file table, inode counts;
}


Anke Steuernagel
Thu May 15 18:53:37 MET DST 1997