#include #include #include #include #include #include #include #include ///////////////////////////////////////////////////////////////////////////////////////// /*FLAGS FROM KERNEL*/ //#define MS_RDONLY 1 /* Mount read-only */ //#define MS_NOSUID 2 /* Ignore suid and sgid bits */ //#define MS_NODEV 4 /* Disallow access to device special files */ //#define MS_NOEXEC 8 /* Disallow program execution */ //#define MS_SYNCHRONOUS 16 /* Writes are synced at once */ //#define MS_REMOUNT 32 /* Alter flags of a mounted FS */ //#define MS_MANDLOCK 64 /* Allow mandatory locks on an FS */ //#define MS_DIRSYNC 128 /* Directory modifications are synchronous */ //#define MS_NOATIME 1024 /* Do not update access times. */ //#define MS_NODIRATIME 2048 /* Do not update directory access times */ //#define MS_BIND 4096 //#define MS_MOVE 8192 //#define MS_REC 16384 //#define MS_VERBOSE 32768 /* War is peace. Verbosity is silence. // MS_VERBOSE is deprecated. */ //#define MS_SILENT 32768 //#define MS_POSIXACL (1<<16) /* VFS does not apply the umask */ //#define MS_UNBINDABLE (1<<17) /* change to unbindable */ //#define MS_PRIVATE (1<<18) /* change to private */ //#define MS_SLAVE (1<<19) /* change to slave */ //#define MS_SHARED (1<<20) /* change to shared */ //#define MS_RELATIME (1<<21) /* Update atime relative to mtime/ctime. */ //#define MS_KERNMOUNT (1<<22) /* this is a kern_mount call */ //#define MS_I_VERSION (1<<23) /* Update inode I_version field */ //#define MS_STRICTATIME (1<<24) /* Always perform atime updates */ //#define MS_LAZYTIME (1<<25) /* Update the on-disk [acm]times lazily */ typedef struct { int f_output; //show statistics of pipe int f_stopzero; //stop if 0 bytes in input int f_nowriteout; // dont write to output int f_graphmode; //show graph } mount_params; static mount_params g_params; void helper(char *progname) { printf("Usage: %s [OPTS]\n\n" "Version: 0.0.1 \n" "\n" , progname); } void sig_handler(int signo) { switch(signo) { case SIGINT: //printf("Catch SIGINT Exit\n"); //if (g_params.f_output) //{ // printf("Data in %d bytes Data out %d bytes",g_stats.cnt_in,g_stats.cnt_out); //} default: printf("Unknown signal %d\n",signo); } exit(0); } int smount(const char *source, const char *target, const char *filesystemtype, unsigned long mountflags, const void *data); int main(int argc, char **argv) { int c; printf("One big real mount\n"); if (signal(SIGINT,sig_handler) == SIG_ERR) { printf("cannot register signal handler\n"); exit(1); } //process arguments while ((c = getopt(argc, argv, "osng")) != -1) { switch (c) { case 'v': //g_params.f_output = 1; break; default: helper(argv[0]); exit(1); } } return 0; } int smount( const char *source, const char *target, const char *filesystemtype, unsigned long mountflags, const void *data) { return 0; }