This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
releases:3.2.1:developersguide:pipefs [2014/11/13 15:35] lionelsambuc |
releases:3.2.1:developersguide:pipefs [2016/04/01 16:36] (current) buy2essays |
||
---|---|---|---|
Line 51: | Line 51: | ||
==== fs_readwrite (see read.c) ==== | ==== fs_readwrite (see read.c) ==== | ||
- | This function is used for both reading and writing. It knows which operation to perform based on the m_type in the incoming message. The function calls find_inode() with the inode number (REQ_INODE_NR) from the incoming message to locate the desired inode. A sanity check is done to ensure that a write won't exceed the size of the pipe buffer. Then get_inode() and get_block() are called to mark them in use (i.e. increment their reference counters). Then bytes are copied between the block buffer and user space using sys_safecopyto() (for reading) or sys_safecopyfrom() (for writing). Then the position is updated and flags are set to update the inode's ATIME, CTIME, and/or MTIME. Finally put_inode() and put_block() are called to decrement their reference counters. | + | This function is used for both reading and essay writing buy2essays.com. It knows which operation to perform based on the m_type in the incoming message. The function calls find_inode() with the inode number (REQ_INODE_NR) from the incoming message to locate the desired inode. A sanity check is done to ensure that a write won't exceed the size of the pipe buffer. Then get_inode() and get_block() are called to mark them in use (i.e. increment their reference counters). Then bytes are copied between the block buffer and user space using sys_safecopyto() (for reading) or sys_safecopyfrom() (for writing). Then the position is updated and flags are set to update the inode's ATIME, CTIME, and/or MTIME. Finally put_inode() and put_block() are called to decrement their reference counters. |
===== block Management (see buffer.c and buf.h) ===== | ===== block Management (see buffer.c and buf.h) ===== |