#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include static int fsync_wrap(struct thread *td, struct fsync_args *uap) { return (0); } sy_call_t *old_fsync; static int fsync_module_handler(struct module *mod, int what, void *arg) { struct syscall_module_data *data = (struct syscall_module_data*)arg; modspecific_t ms; int error; int i; switch (what) { case MOD_LOAD: old_fsync = sysent[SYS_fsync].sy_func; sysent[SYS_fsync].sy_func = (sy_call_t *)fsync_wrap; return 0; case MOD_UNLOAD: sysent[SYS_fsync].sy_func = old_fsync; return 0; default: return EOPNOTSUPP; } return 0; } static moduledata_t fsync_mod = { "fsync", fsync_module_handler, NULL }; DECLARE_MODULE(fsync, fsync_mod, SI_SUB_INTRINSIC_POST, SI_ORDER_ANY);