ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΏΠΎΠ»Ρ vnode ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ Π² ΡΠ°Π±Π». 4.1.
Π’Π°Π±Π»ΠΈΡΠ° 4.1. ΠΠΎΠ»Ρ vnode
| ΠΠΎΠ»Π΅ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
|---|---|
u_short vflag | Π€Π»Π°Π³ΠΈ vnode |
u_short v_count | Π§ΠΈΡΠ»ΠΎ ΡΡΡΠ»ΠΎΠΊ Π½Π° vnode |
struct filock *v_filocks | ΠΠ»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΡΠ°ΠΉΠ»Π° |
struct vfs *v_vfsmountedhere | Π£ΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Π½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ, Π΅ΡΠ»ΠΈ vnode ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΡΠΊΠΎΠΉ ΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ |
struct vfs *v_vfsp | Π£ΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΡΠ°ΠΉΠ» |
enum vtype v_type | Π’ΠΈΠΏ vnode: ΠΎΠ±ΡΡΠ½ΡΠΉ ΡΠ°ΠΉΠ», ΠΊΠ°ΡΠ°Π»ΠΎΠ³, ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» ΡΡΡΡΠΎΠΉΡΡΠ²Π°, ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠ²ΡΠ·Ρ, ΡΠΎΠΊΠ΅Ρ |
caddr_t v_data | Π£ΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° Π΄Π°Π½Π½ΡΠ΅, ΠΎΡΠ½ΠΎΡΡΡΠΈΠ΅ΡΡ ΠΊ ΡΠ΅Π°Π»ΡΠ½ΠΎΠΉ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ |
struct op | ΠΠΏΠ΅ΡΠ°ΡΠΈΠΈ vnode |
ΠΠ°ΠΆΠ΄ΡΠΉ vnode ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΈΡΠ»ΠΎ ΡΡΡΠ»ΠΎΠΊ
v_countvn_inactive()ΠΠΎΠ»Π΅
v_vfspvfsv_vfsmountednereΠΠΎΠ»Π΅
v_datav_dataΠΠ°Π±ΠΎΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π½Π°Π΄ vnode ΡΠΊΠ°Π·Π°Π½ ΠΏΠΎΠ»Π΅ΠΌ
v_opΠ’Π°Π±Π»ΠΈΡΠ° 4.2. ΠΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ vnode Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ
int (*vn_open)() | ΠΡΠΊΡΡΡΡ vnode. ΠΡΠ»ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΏΡΠ΅Π΄ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠ»ΠΎΠ½Π° (ΡΠ°Π·ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅), ΡΠΎ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π±ΡΠ΄Π΅Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ Π½ΠΎΠ²ΡΠΉ vnode. ΠΠ±ΡΡΠ½ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠ½Ρ Π΄Π»Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΡΡΡΡΠΎΠΉΡΡΠ². |
int (*vn_close)() | ΠΠ°ΠΊΡΡΡΡ vnode. |
int (*vn_read)() | Π§ΡΠ΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ ΡΠ°ΠΉΠ»Π°, Π°Π΄ΡΠ΅ΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ vnode. |
int (*vn_write)() | ΠΠ°ΠΏΠΈΡΡ Π² ΡΠ°ΠΉΠ», Π°Π΄ΡΠ΅ΡΠΎΠ²Π°Π½Π½ΡΠΉ vnode. |
int (*vn_ioctl)() | ΠΠ°Π΄Π°Π½ΠΈΠ΅ ΡΠΏΡΠ°Π²Π»ΡΡΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ. |
int (*vn_getaddr)() | ΠΠΎΠ»ΡΡΠΈΡΡ Π°ΡΡΠΈΠ±ΡΡΡ vnode: ΡΠΈΠΏ vnode, ΠΏΡΠ°Π²Π° Π΄ΠΎΡΡΡΠΏΠ°, Π²Π»Π°Π΄Π΅Π»Π΅Ρ-ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π²Π»Π°Π΄Π΅Π»Π΅Ρ-Π³ΡΡΠΏΠΏΠ°, ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ, Π½ΠΎΠΌΠ΅Ρ inode, ΡΠΈΡΠ»ΠΎ ΡΠ²ΡΠ·Π΅ΠΉ, ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ°ΠΉΠ»Π°, ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ Π±Π»ΠΎΠΊΠ° Π΄Π»Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π²Π²ΠΎΠ΄Π°/Π²ΡΠ²ΠΎΠ΄Π°, Π²ΡΠ΅ΠΌΡ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ Π΄ΠΎΡΡΡΠΏΠ°, Π²ΡΠ΅ΠΌΡ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ, Π²ΡΠ΅ΠΌΡ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ vnode, ΡΠΈΡΠ»ΠΎ Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΡΡ Π±Π»ΠΎΠΊΠΎΠ². |
int (*vn_setaddr)() | Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π°ΡΡΠΈΠ±ΡΡΡ vnode. ΠΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ UID, GID, ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ°ΠΉΠ»Π° ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½Π° Π΄ΠΎΡΡΡΠΏΠ° ΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ. |
int (*vn_access)() | ΠΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΏΡΠ°Π²Π° Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ°ΠΉΠ»Ρ, Π°Π΄ΡΠ΅ΡΠΎΠ²Π°Π½Π½ΠΎΠΌΡ vnode. ΠΡΠΈ ΡΡΠΎΠΌ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ Π°ΡΡΠΈΠ±ΡΡΠ°ΠΌΠΈ Π΄ΠΎΡΡΡΠΏΠ° ΡΠ°ΠΉΠ»ΠΎΠ² UNIX ΠΈ Π°ΡΡΠΈΠ±ΡΡΠ°ΠΌΠΈ ΡΠ΅Π°Π»ΡΠ½ΠΎΠΉ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, DOS). |
int (*vn_lookup)() | ΠΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΡΡΠ°Π½ΡΠ»ΡΡΠΈΡ ΠΈΠΌΠ΅Π½ΠΈ ΡΠ°ΠΉΠ»Π° Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ Π΅ΠΌΡ vnode. |
int (*vn_create)() | Π‘ΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΠΉ ΡΠ°ΠΉΠ» ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ Π΅ΠΌΡ vnode. |
int (*vn_remove)() | Π£Π΄Π°Π»ΠΈΡΡ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π° Π² ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ vnode ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅. |
int (*vn_link)() | Π‘ΠΎΠ·Π΄Π°ΡΡ ΠΆΠ΅ΡΡΠΊΡΡ ΡΠ²ΡΠ·Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΡΠ°ΠΉΠ»Π° ΠΈ vnode. |
int (*vn_mkdir)() | Π‘ΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Π² ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ vnode ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅. |
int (*vn_rmdir)() | Π£Π΄Π°Π»ΠΈΡΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³. |
int (*vn_readdir)() | Π‘ΡΠΈΡΠ°ΡΡ Π·Π°ΠΏΠΈΡΠΈ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°, Π°Π΄ΡΠ΅ΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ vnode. |
int (*vn_symlink)() | Π‘ΠΎΠ·Π΄Π°ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ΡΠΊΡΡ ΡΠ²ΡΠ·Ρ ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΎΠ²ΡΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΈ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΡΠ°ΠΉΠ»Π°, ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΠΎΠΌ Π² ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ vnode ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅. |
int (*vn_readlink)() | Π§ΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π° β ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠ²ΡΠ·ΠΈ. |
int (*vn_fsync)() | Π‘ΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ°ΠΉΠ»Π° β Π·Π°ΠΏΠΈΡΠ°ΡΡ Π²ΡΠ΅ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅. |
int (*vn_inactive)() | Π Π°Π·ΡΠ΅ΡΠΈΡΡ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ vnode, Ρ.ΠΊ. ΡΠΈΡΠ»ΠΎ ΡΡΡΠ»ΠΎΠΊ Π½Π° vnode ΠΈΠ· Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΡΡΠ°Π»ΠΎ ΡΠ°Π²Π½ΡΠΌ Π½ΡΠ»Ρ. |
ΠΠ·Π°ΠΈΠΌΠΎΡΠ²ΡΠ·Ρ ΠΌΠ΅ΠΆΠ΄Ρ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΠΌΠΈ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠ°ΠΌΠΈ (vnode) ΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΡΠΌΠΈ ΠΎΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠΌΠΈ ΡΠ°ΠΉΠ»Π° ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Π½Π° ΡΠΈΡ.Β 4.8.