123456789101112131415161718192021222324252627282930313233343536373839 |
- /* rmmod.c - Remove a module from the Linux kernel.
- *
- * Copyright 2012 Elie De Brauwer <eliedebrauwer@gmail.com>
- USE_RMMOD(NEWTOY(rmmod, "<1wf", TOYFLAG_SBIN|TOYFLAG_NEEDROOT))
- config RMMOD
- bool "rmmod"
- default y
- help
- usage: rmmod [-wf] MODULE...
- Unload the given kernel modules.
- -f Force unload of a module
- -w Wait until the module is no longer used
- */
- #define FOR_rmmod
- #include "toys.h"
- #define delete_module(mod, flags) syscall(__NR_delete_module, mod, flags)
- void rmmod_main(void)
- {
- char **args, *module, *s;
- unsigned flags;
- for (args = toys.optargs; *args; args++) {
- module = basename(*args);
- // Remove .ko if present
- if ((s = strend(module, ".ko"))) *s = 0;
- flags = O_NONBLOCK;
- if (FLAG(f)) flags |= O_TRUNC;
- if (FLAG(w)) flags &= ~O_NONBLOCK;
- if (delete_module(module, flags)) perror_msg("failed to unload %s", module);
- }
- }
|