~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Linux Cross Reference
Linux/include/linux/pipe_fs_i.h

Version: ~ [ 2.4.0 ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 #ifndef _LINUX_PIPE_FS_I_H
  2 #define _LINUX_PIPE_FS_I_H
  3 
  4 #define PIPEFS_MAGIC 0x50495045
  5 struct pipe_inode_info {
  6         wait_queue_head_t wait;
  7         char *base;
  8         unsigned int start;
  9         unsigned int readers;
 10         unsigned int writers;
 11         unsigned int waiting_readers;
 12         unsigned int waiting_writers;
 13         unsigned int r_counter;
 14         unsigned int w_counter;
 15 };
 16 
 17 /* Differs from PIPE_BUF in that PIPE_SIZE is the length of the actual
 18    memory allocation, whereas PIPE_BUF makes atomicity guarantees.  */
 19 #define PIPE_SIZE               PAGE_SIZE
 20 
 21 #define PIPE_SEM(inode)         (&(inode).i_sem)
 22 #define PIPE_WAIT(inode)        (&(inode).i_pipe->wait)
 23 #define PIPE_BASE(inode)        ((inode).i_pipe->base)
 24 #define PIPE_START(inode)       ((inode).i_pipe->start)
 25 #define PIPE_LEN(inode)         ((inode).i_size)
 26 #define PIPE_READERS(inode)     ((inode).i_pipe->readers)
 27 #define PIPE_WRITERS(inode)     ((inode).i_pipe->writers)
 28 #define PIPE_WAITING_READERS(inode)     ((inode).i_pipe->waiting_readers)
 29 #define PIPE_WAITING_WRITERS(inode)     ((inode).i_pipe->waiting_writers)
 30 #define PIPE_RCOUNTER(inode)    ((inode).i_pipe->r_counter)
 31 #define PIPE_WCOUNTER(inode)    ((inode).i_pipe->w_counter)
 32 
 33 #define PIPE_EMPTY(inode)       (PIPE_LEN(inode) == 0)
 34 #define PIPE_FULL(inode)        (PIPE_LEN(inode) == PIPE_SIZE)
 35 #define PIPE_FREE(inode)        (PIPE_SIZE - PIPE_LEN(inode))
 36 #define PIPE_END(inode) ((PIPE_START(inode) + PIPE_LEN(inode)) & (PIPE_SIZE-1))
 37 #define PIPE_MAX_RCHUNK(inode)  (PIPE_SIZE - PIPE_START(inode))
 38 #define PIPE_MAX_WCHUNK(inode)  (PIPE_SIZE - PIPE_END(inode))
 39 
 40 /* Drop the inode semaphore and wait for a pipe event, atomically */
 41 void pipe_wait(struct inode * inode);
 42 
 43 struct inode* pipe_new(struct inode* inode);
 44 
 45 #endif
 46 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.