morpheus-base

morpheus base system
git clone git://git.2f30.org/morpheus-base.git
Log | Files | Refs

rmmod.c (754B)


      1 /* See LICENSE file for copyright and license details. */
      2 #include <sys/syscall.h>
      3 
      4 #include <fcntl.h>
      5 #include <libgen.h>
      6 #include <stdio.h>
      7 #include <stdlib.h>
      8 #include <string.h>
      9 #include <unistd.h>
     10 
     11 #include "util.h"
     12 
     13 static void
     14 usage(void)
     15 {
     16 	eprintf("usage: %s [-fw] module...\n", argv0);
     17 }
     18 
     19 int
     20 main(int argc, char *argv[])
     21 {
     22 	char *mod, *p;
     23 	int i;
     24 	int flags = O_NONBLOCK;
     25 
     26 	ARGBEGIN {
     27 	case 'f':
     28 		flags |= O_TRUNC;
     29 		break;
     30 	case 'w':
     31 		flags &= ~O_NONBLOCK;
     32 		break;
     33 	default:
     34 		usage();
     35 	} ARGEND;
     36 
     37 	if (argc < 1)
     38 		usage();
     39 
     40 	for (i = 0; i < argc; i++) {
     41 		mod = argv[i];
     42 		p = strrchr(mod, '.');
     43 		if (p && !strcmp(p, ".ko"))
     44 			*p = '\0';
     45 		if (syscall(__NR_delete_module, mod, flags) < 0)
     46 			eprintf("delete_module:");
     47 	}
     48 
     49 	return 0;
     50 }