• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #include <stdio.h>
2 #include <string.h>
3 #include <fcntl.h>
4 #include <unistd.h>
5 #include <malloc.h>
6 #include <errno.h>
7 #include <asm/unistd.h>
8 
9 extern int delete_module(const char *, unsigned int);
10 
rmmod_main(int argc,char ** argv)11 int rmmod_main(int argc, char **argv)
12 {
13 	int ret;
14 	char *modname, *dot;
15 
16 	/* make sure we've got an argument */
17 	if (argc < 2) {
18 		fprintf(stderr, "usage: rmmod <module>\n");
19 		return -1;
20 	}
21 
22 	/* if given /foo/bar/blah.ko, make a weak attempt
23 	 * to convert to "blah", just for convenience
24 	 */
25 	modname = strrchr(argv[1], '/');
26 	if (!modname)
27 		modname = argv[1];
28 	dot = strchr(argv[1], '.');
29 	if (dot)
30 		*dot = '\0';
31 
32 	/* pass it to the kernel */
33 	ret = delete_module(modname, O_NONBLOCK | O_EXCL);
34 	if (ret != 0) {
35 		fprintf(stderr, "rmmod: delete_module '%s' failed (errno %d)\n",
36 						modname, errno);
37 		return -1;
38 	}
39 
40 	return 0;
41 }
42 
43