summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_module.c
diff options
context:
space:
mode:
authorarr <arr@FreeBSD.org>2002-02-20 14:30:02 +0000
committerarr <arr@FreeBSD.org>2002-02-20 14:30:02 +0000
commit1b20e66ad434311c413364349a62ea86d17f32cd (patch)
treef93737ec9af47cd32a2fd6b3a1c0e9abb11db06e /sys/kern/kern_module.c
parentb7d0d162c2777065ce92fb4131f483f08ef11856 (diff)
downloadFreeBSD-src-1b20e66ad434311c413364349a62ea86d17f32cd.zip
FreeBSD-src-1b20e66ad434311c413364349a62ea86d17f32cd.tar.gz
- Style.9 formatting fix; this commit is mostly white space related with
the next commit actually doing the: return val; -> return (val); changes. This commit was done in preparation for getting ``struct modules'' locked down. Reviewed by: bde Approved by: dfr
Diffstat (limited to 'sys/kern/kern_module.c')
-rw-r--r--sys/kern/kern_module.c418
1 files changed, 209 insertions, 209 deletions
diff --git a/sys/kern/kern_module.c b/sys/kern/kern_module.c
index f3651d2..19e467b 100644
--- a/sys/kern/kern_module.c
+++ b/sys/kern/kern_module.c
@@ -43,176 +43,181 @@ static MALLOC_DEFINE(M_MODULE, "module", "module data structures");
typedef TAILQ_HEAD(, module) modulelist_t;
struct module {
- TAILQ_ENTRY(module) link; /* chain together all modules */
- TAILQ_ENTRY(module) flink; /* all modules in a file */
- struct linker_file* file; /* file which contains this module */
- int refs; /* reference count */
- int id; /* unique id number */
- char *name; /* module name */
- modeventhand_t handler; /* event handler */
- void *arg; /* argument for handler */
- modspecific_t data; /* module specific data */
+ TAILQ_ENTRY(module) link; /* chain together all modules */
+ TAILQ_ENTRY(module) flink; /* all modules in a file */
+ struct linker_file *file; /* file which contains this module */
+ int refs; /* reference count */
+ int id; /* unique id number */
+ char *name; /* module name */
+ modeventhand_t handler; /* event handler */
+ void *arg; /* argument for handler */
+ modspecific_t data; /* module specific data */
};
-#define MOD_EVENT(mod, type) (mod)->handler((mod), (type), (mod)->arg)
+#define MOD_EVENT(mod, type) (mod)->handler((mod), (type), (mod)->arg)
static modulelist_t modules;
static int nextid = 1;
-
-static void module_shutdown(void*, int);
+static void module_shutdown(void *, int);
static int
-modevent_nop(module_t mod, int what, void* arg)
+modevent_nop(module_t mod, int what, void *arg)
{
return 0;
}
static void
-module_init(void* arg)
+module_init(void *arg)
{
- TAILQ_INIT(&modules);
- EVENTHANDLER_REGISTER(shutdown_post_sync, module_shutdown, NULL,
- SHUTDOWN_PRI_DEFAULT);
+
+ TAILQ_INIT(&modules);
+ EVENTHANDLER_REGISTER(shutdown_post_sync, module_shutdown, NULL,
+ SHUTDOWN_PRI_DEFAULT);
}
-SYSINIT(module, SI_SUB_KLD, SI_ORDER_FIRST, module_init, 0);
+SYSINIT(module, SI_SUB_KLD, SI_ORDER_FIRST, module_init, 0)
static void
-module_shutdown(void* arg1, int arg2)
+module_shutdown(void *arg1, int arg2)
{
- module_t mod;
+ module_t mod;
- TAILQ_FOREACH(mod, &modules, link)
- MOD_EVENT(mod, MOD_SHUTDOWN);
+ TAILQ_FOREACH(mod, &modules, link)
+ MOD_EVENT(mod, MOD_SHUTDOWN);
}
void
module_register_init(const void *arg)
{
- const moduledata_t* data = (const moduledata_t*) arg;
- int error;
- module_t mod;
-
- mod = module_lookupbyname(data->name);
- if (mod == NULL)
- panic("module_register_init: module named %s not found\n", data->name);
- error = MOD_EVENT(mod, MOD_LOAD);
- if (error) {
- MOD_EVENT(mod, MOD_UNLOAD);
- module_release(mod);
- printf("module_register_init: MOD_LOAD (%s, %lx, %p) error %d\n",
- data->name, (u_long)(uintfptr_t)data->evhand, data->priv, error);
- }
+ const moduledata_t *data = (const moduledata_t *)arg;
+ int error;
+ module_t mod;
+
+ mod = module_lookupbyname(data->name);
+ if (mod == NULL)
+ panic("module_register_init: module named %s not found\n",
+ data->name);
+ error = MOD_EVENT(mod, MOD_LOAD);
+ if (error) {
+ MOD_EVENT(mod, MOD_UNLOAD);
+ module_release(mod);
+ printf(
+ "module_register_init: MOD_LOAD (%s, %lx, %p) error %d\n",
+ data->name, (u_long)(uintfptr_t)data->evhand, data->priv,
+ error);
+ }
}
int
module_register(const moduledata_t *data, linker_file_t container)
{
- size_t namelen;
- module_t newmod;
-
- newmod = module_lookupbyname(data->name);
- if (newmod != NULL) {
- printf("module_register: module %s already exists!\n", data->name);
- return EEXIST;
- }
- namelen = strlen(data->name) + 1;
- newmod = (module_t) malloc(sizeof(struct module) + namelen,
- M_MODULE, M_WAITOK);
- if (newmod == 0)
- return ENOMEM;
-
- newmod->refs = 1;
- newmod->id = nextid++;
- newmod->name = (char *) (newmod + 1);
- strcpy(newmod->name, data->name);
- newmod->handler = data->evhand ? data->evhand : modevent_nop;
- newmod->arg = data->priv;
- bzero(&newmod->data, sizeof(newmod->data));
- TAILQ_INSERT_TAIL(&modules, newmod, link);
-
- if (container)
- TAILQ_INSERT_TAIL(&container->modules, newmod, flink);
- newmod->file = container;
-
- return 0;
+ size_t namelen;
+ module_t newmod;
+
+ newmod = module_lookupbyname(data->name);
+ if (newmod != NULL) {
+ printf("module_register: module %s already exists!\n",
+ data->name);
+ return EEXIST;
+ }
+ namelen = strlen(data->name) + 1;
+ newmod = malloc(sizeof(struct module) + namelen, M_MODULE, M_WAITOK);
+ if (newmod == NULL)
+ return ENOMEM;
+ newmod->refs = 1;
+ newmod->id = nextid++;
+ newmod->name = (char *)(newmod + 1);
+ strcpy(newmod->name, data->name);
+ newmod->handler = data->evhand ? data->evhand : modevent_nop;
+ newmod->arg = data->priv;
+ bzero(&newmod->data, sizeof(newmod->data));
+ TAILQ_INSERT_TAIL(&modules, newmod, link);
+
+ if (container)
+ TAILQ_INSERT_TAIL(&container->modules, newmod, flink);
+ newmod->file = container;
+ return 0;
}
void
module_reference(module_t mod)
{
- MOD_DPF(REFS, ("module_reference: before, refs=%d\n", mod->refs));
- mod->refs++;
+ MOD_DPF(REFS, ("module_reference: before, refs=%d\n", mod->refs));
+ mod->refs++;
}
void
module_release(module_t mod)
{
- if (mod->refs <= 0)
- panic("module_release: bad reference count");
- MOD_DPF(REFS, ("module_release: before, refs=%d\n", mod->refs));
+ if (mod->refs <= 0)
+ panic("module_release: bad reference count");
- mod->refs--;
- if (mod->refs == 0) {
- TAILQ_REMOVE(&modules, mod, link);
- if (mod->file) {
- TAILQ_REMOVE(&mod->file->modules, mod, flink);
+ MOD_DPF(REFS, ("module_release: before, refs=%d\n", mod->refs));
+
+ mod->refs--;
+ if (mod->refs == 0) {
+ TAILQ_REMOVE(&modules, mod, link);
+ if (mod->file)
+ TAILQ_REMOVE(&mod->file->modules, mod, flink);
+ free(mod, M_MODULE);
}
- free(mod, M_MODULE);
- }
}
module_t
-module_lookupbyname(const char* name)
+module_lookupbyname(const char *name)
{
- module_t mod;
-
- TAILQ_FOREACH(mod, &modules, link) {
- if (!strcmp(mod->name, name))
- return mod;
- }
+ module_t mod;
+ int err;
- return 0;
+ TAILQ_FOREACH(mod, &modules, link) {
+ err = strcmp(mod->name, name);
+ if (err == 0)
+ return mod;
+ }
+ return 0;
}
module_t
module_lookupbyid(int modid)
{
- module_t mod;
+ module_t mod;
- TAILQ_FOREACH(mod, &modules, link) {
- if (mod->id == modid)
- return mod;
- }
-
- return 0;
+ TAILQ_FOREACH(mod, &modules, link) {
+ if (mod->id == modid)
+ return mod;
+ }
+ return 0;
}
int
module_unload(module_t mod)
{
- return MOD_EVENT(mod, MOD_UNLOAD);
+
+ return MOD_EVENT(mod, MOD_UNLOAD);
}
int
module_getid(module_t mod)
{
- return mod->id;
+
+ return mod->id;
}
module_t
module_getfnext(module_t mod)
{
- return TAILQ_NEXT(mod, flink);
+
+ return TAILQ_NEXT(mod, flink);
}
void
module_setspecific(module_t mod, modspecific_t *datap)
{
- mod->data = *datap;
+
+ mod->data = *datap;
}
/*
@@ -224,34 +229,32 @@ module_setspecific(module_t mod, modspecific_t *datap)
int
modnext(struct thread *td, struct modnext_args *uap)
{
- module_t mod;
- int error = 0;
-
- mtx_lock(&Giant);
-
- td->td_retval[0] = -1;
- if (SCARG(uap, modid) == 0) {
- mod = TAILQ_FIRST(&modules);
- if (mod)
- td->td_retval[0] = mod->id;
+ module_t mod;
+ int error = 0;
+
+ mtx_lock(&Giant);
+
+ td->td_retval[0] = -1;
+ if (SCARG(uap, modid) == 0) {
+ mod = TAILQ_FIRST(&modules);
+ if (mod)
+ td->td_retval[0] = mod->id;
+ else
+ error = ENOENT;
+ goto done2;
+ }
+ mod = module_lookupbyid(SCARG(uap, modid));
+ if (mod == NULL) {
+ error = ENOENT;
+ goto done2;
+ }
+ if (TAILQ_NEXT(mod, link))
+ td->td_retval[0] = TAILQ_NEXT(mod, link)->id;
else
- error = ENOENT;
- goto done2;
- }
-
- mod = module_lookupbyid(SCARG(uap, modid));
- if (mod == NULL) {
- error = ENOENT;
- goto done2;
- }
-
- if (TAILQ_NEXT(mod, link))
- td->td_retval[0] = TAILQ_NEXT(mod, link)->id;
- else
- td->td_retval[0] = 0;
+ td->td_retval[0] = 0;
done2:
- mtx_unlock(&Giant);
- return (error);
+ mtx_unlock(&Giant);
+ return (error);
}
/*
@@ -260,32 +263,32 @@ done2:
int
modfnext(struct thread *td, struct modfnext_args *uap)
{
- module_t mod;
- int error;
-
- td->td_retval[0] = -1;
-
- mtx_lock(&Giant);
-
- mod = module_lookupbyid(SCARG(uap, modid));
- if (mod == NULL) {
- error = ENOENT;
- } else {
- error = 0;
- if (TAILQ_NEXT(mod, flink))
- td->td_retval[0] = TAILQ_NEXT(mod, flink)->id;
- else
- td->td_retval[0] = 0;
- }
- mtx_unlock(&Giant);
- return (error);
+ module_t mod;
+ int error;
+
+ td->td_retval[0] = -1;
+
+ mtx_lock(&Giant);
+
+ mod = module_lookupbyid(SCARG(uap, modid));
+ if (mod == NULL) {
+ error = ENOENT;
+ } else {
+ error = 0;
+ if (TAILQ_NEXT(mod, flink))
+ td->td_retval[0] = TAILQ_NEXT(mod, flink)->id;
+ else
+ td->td_retval[0] = 0;
+ }
+ mtx_unlock(&Giant);
+ return (error);
}
struct module_stat_v1 {
- int version; /* set to sizeof(struct module_stat) */
- char name[MAXMODNAME];
- int refs;
- int id;
+ int version; /* set to sizeof(struct module_stat) */
+ char name[MAXMODNAME];
+ int refs;
+ int id;
};
/*
@@ -294,57 +297,54 @@ struct module_stat_v1 {
int
modstat(struct thread *td, struct modstat_args *uap)
{
- module_t mod;
- int error = 0;
- int namelen;
- int version;
- struct module_stat* stat;
-
- mtx_lock(&Giant);
-
- mod = module_lookupbyid(SCARG(uap, modid));
- if (mod == NULL) {
- error = ENOENT;
- goto out;
- }
-
- stat = SCARG(uap, stat);
-
- /*
- * Check the version of the user's structure.
- */
- if ((error = copyin(&stat->version, &version, sizeof(version))) != 0)
- goto out;
- if (version != sizeof(struct module_stat_v1)
- && version != sizeof(struct module_stat)) {
- error = EINVAL;
- goto out;
- }
-
- namelen = strlen(mod->name) + 1;
- if (namelen > MAXMODNAME)
- namelen = MAXMODNAME;
- if ((error = copyout(mod->name, &stat->name[0], namelen)) != 0)
- goto out;
-
- if ((error = copyout(&mod->refs, &stat->refs, sizeof(int))) != 0)
- goto out;
- if ((error = copyout(&mod->id, &stat->id, sizeof(int))) != 0)
- goto out;
-
- /*
- * >v1 stat includes module data.
- */
- if (version == sizeof(struct module_stat)) {
- if ((error = copyout(&mod->data, &stat->data, sizeof(mod->data))) != 0)
- goto out;
- }
-
- td->td_retval[0] = 0;
-
+ module_t mod;
+ int error = 0;
+ int namelen;
+ int version;
+ struct module_stat *stat;
+
+ mtx_lock(&Giant);
+
+ mod = module_lookupbyid(SCARG(uap, modid));
+ if (mod == NULL) {
+ error = ENOENT;
+ goto out;
+ }
+ stat = SCARG(uap, stat);
+
+ /*
+ * Check the version of the user's structure.
+ */
+ if ((error = copyin(&stat->version, &version, sizeof(version))) != 0)
+ goto out;
+ if (version != sizeof(struct module_stat_v1)
+ && version != sizeof(struct module_stat)) {
+ error = EINVAL;
+ goto out;
+ }
+ namelen = strlen(mod->name) + 1;
+ if (namelen > MAXMODNAME)
+ namelen = MAXMODNAME;
+ if ((error = copyout(mod->name, &stat->name[0], namelen)) != 0)
+ goto out;
+
+ if ((error = copyout(&mod->refs, &stat->refs, sizeof(int))) != 0)
+ goto out;
+ if ((error = copyout(&mod->id, &stat->id, sizeof(int))) != 0)
+ goto out;
+
+ /*
+ * >v1 stat includes module data.
+ */
+ if (version == sizeof(struct module_stat)) {
+ if ((error = copyout(&mod->data, &stat->data,
+ sizeof(mod->data))) != 0)
+ goto out;
+ }
+ td->td_retval[0] = 0;
out:
- mtx_unlock(&Giant);
- return error;
+ mtx_unlock(&Giant);
+ return error;
}
/*
@@ -353,20 +353,20 @@ out:
int
modfind(struct thread *td, struct modfind_args *uap)
{
- int error = 0;
- char name[MAXMODNAME];
- module_t mod;
-
- if ((error = copyinstr(SCARG(uap, name), name, sizeof name, 0)) != 0)
- goto out;
-
- mtx_lock(&Giant);
- mod = module_lookupbyname(name);
- if (mod == NULL)
- error = ENOENT;
- else
- td->td_retval[0] = mod->id;
- mtx_unlock(&Giant);
+ int error = 0;
+ char name[MAXMODNAME];
+ module_t mod;
+
+ if ((error = copyinstr(SCARG(uap, name), name, sizeof name, 0)) != 0)
+ goto out;
+
+ mtx_lock(&Giant);
+ mod = module_lookupbyname(name);
+ if (mod == NULL)
+ error = ENOENT;
+ else
+ td->td_retval[0] = mod->id;
+ mtx_unlock(&Giant);
out:
- return error;
+ return error;
}
OpenPOWER on IntegriCloud