I know in mi_startup(),the kernel will try to load the modules registered by SYSINIT. I think its order is: firstly according 'sysinit_sub_id'; secondly,if the 'sysinit_sub_id' are the same, it is accord 'sysinit_elem_order', right?From: Peter Wemm <[EMAIL PROTECTED]> The name of the macro is a little strange, that is more of a historical relic where we used to declare these things in something called a 'linker set'. These days it is handled by a SYSINIT() function that registers the vnode ops.
I wonder if both of them is the same, the kernel will try to load which.
For example:
SYSINIT(nameA, SI_SUB_DRIVERS, SI_ORDER_FIRST, initA, NULL);
SYSINIT(nameB, SI_SUB_DRIVERS, SI_ORDER_FIRST, initB, NULL);
which do the kernel load firstly?
union fs's means what? FreeBSD's UFS is result that union of UFS and FFS, right?
Our vnode op system is fully dynamic. We can create new VOP_xxx() functions
on the fly. But for this to work, they need to be registered and assigned
an index number in the system vectors. The act of referencing a "foo" vector
in the xxx_opv_desc table adds support for a VOP_FOO().
For example, suppose we have some remote file system loadable module that
supports remote file copies. That filesystem could introduce
VOP_COPYFILE() that would cause the file to be copied on the server, rather
than the source file being read by the client and then copied back to the
new file. We could then load another module that adds a copyfile(2) syscall
that calls VOP_COPYFILE(). And because of the vnode stacking system and
the VOP_DEFAULT() vectors, we could even mount union fs's over the top of
this hypothetical file system, even though at the time that unionfs was
compiled there was no VOP_COPYFILE operation to pass down the stack.
Based on your words, I still do not understand those difference among those VOP_SET. :(. I think your viewpoints is that the number of VOP_SETs and the function of VOP_SETs is decided by the filesystem, right? I want to know the general purposes of those VOP_SETs.Quite a while ago, the kernel used to have a static list of supported VOP_* calls. This has not been the case for quite some time now. Any file system can create any VOP_* that it likes.
For example: in FFS:
VNODEOP_SET(ffs_vnodeop_opv_desc); I think it is normal operation vectors.
VNODEOP_SET(ffs_specop_opv_desc); I think it is special operation vectors. But I do not know its purpose.
VNODEOP_SET(ffs_fifoop_opv_desc); I think it is FIFO operation vectors.
Why do those three VOP_SETs have many repeated defines?
Or All my thought is wrong?
Thank you very much!
Best Regards
Ouyang Kai
_________________________________________________________________
The new MSN 8: smart spam protection and 2 months FREE* http://join.msn.com/?page=features/junkmail
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message

