next up previous contents
Next: Montowanie systemu plików Up: System Plików Wirtualny system Previous: Podstawowe struktury VFS   Spis rzeczy

Przykład funkcji VFS

Przeanalizujmy prostą funkcję pokazującą ,,symulowany polimorfizm'' VFS. Oto kod źródłowy funkcji llseek (fs/read_write.c).
static inline loff_t llseek(struct file *file, loff_t offset, int origin)
{
  loff_t (*fn)(struct file *, loff_t, int;
  loff_t retval;

  /* tutaj ustawiana jest domyślna funkcja                           */
  fn = default_llseek;

  /* jeśli dany system plików dostarcza na odpowiednią funkcję,       *
   * to zapisujemy jej wskaźnik na zmienną fn                        */
  if (file->f_op && file->f_op->llseek)
    fn = file->f_op->llseek;
 
  lock_kernel();

  /* wywołanie odpowiedniej funkcji lub funkcji domyślnej            */
  retval = fn(file, offset, origin);

  unlock_kernel();
  return retval;
}



2001-12-18