]> git.ipfire.org Git - thirdparty/kmod.git/commitdiff
libkmod-config: refactor functions to get config
authorLucas De Marchi <lucas.de.marchi@gmail.com>
Tue, 12 Jun 2012 04:43:46 +0000 (01:43 -0300)
committerLucas De Marchi <lucas.de.marchi@gmail.com>
Tue, 12 Jun 2012 04:43:46 +0000 (01:43 -0300)
It makes more sense to have libkmod-config.c deal with the configuration
directly and the others get the config from ctx. As a bonus point we get
a smaller binary. Following numbers are for x86-64, libkmod + kmod:

Before:
   text    data     bss     dec     hex filename
 128840    1496     104  130440   1fd88 tools/modprobe

After:
   text    data     bss     dec     hex filename
 128392    1496     104  129992   1fbc8 tools/modprobe

libkmod/libkmod-config.c
libkmod/libkmod-module.c
libkmod/libkmod-private.h
libkmod/libkmod.c

index d0f784815b2a93d590d650cdf8ed445daa6a2a2d..70044f038f2e4f540bf9af1fe5b9ccbfb5cbd353 100644 (file)
@@ -975,6 +975,7 @@ static struct kmod_config_iter *kmod_config_iter_new(const struct kmod_ctx* ctx,
                                                        enum config_type type)
 {
        struct kmod_config_iter *iter = calloc(1, sizeof(*iter));
+       const struct kmod_config *config = kmod_get_config(ctx);
 
        if (iter == NULL)
                return NULL;
@@ -983,31 +984,31 @@ static struct kmod_config_iter *kmod_config_iter_new(const struct kmod_ctx* ctx,
 
        switch (type) {
        case CONFIG_TYPE_BLACKLIST:
-               iter->list = kmod_get_blacklists(ctx);
+               iter->list = config->blacklists;
                iter->get_key = kmod_blacklist_get_modname;
                break;
        case CONFIG_TYPE_INSTALL:
-               iter->list = kmod_get_install_commands(ctx);
+               iter->list = config->install_commands;
                iter->get_key = kmod_command_get_modname;
                iter->get_value = kmod_command_get_command;
                break;
        case CONFIG_TYPE_REMOVE:
-               iter->list = kmod_get_remove_commands(ctx);
+               iter->list = config->remove_commands;
                iter->get_key = kmod_command_get_modname;
                iter->get_value = kmod_command_get_command;
                break;
        case CONFIG_TYPE_ALIAS:
-               iter->list = kmod_get_aliases(ctx);
+               iter->list = config->aliases;
                iter->get_key = kmod_alias_get_name;
                iter->get_value = kmod_alias_get_modname;
                break;
        case CONFIG_TYPE_OPTION:
-               iter->list = kmod_get_options(ctx);
+               iter->list = config->options;
                iter->get_key = kmod_option_get_modname;
                iter->get_value = kmod_option_get_options;
                break;
        case CONFIG_TYPE_SOFTDEP:
-               iter->list = kmod_get_softdeps(ctx);
+               iter->list = config->softdeps;
                iter->get_key = kmod_softdep_get_name;
                iter->get_value = softdep_get_plain_softdep;
                iter->intermediate = true;
index f5384a7b2087508851516c67f48ba8a31a13bbe9..fb3a64e1f19a6a69b05a410db6253b005c632e00 100644 (file)
@@ -840,7 +840,8 @@ elf_failed:
 static bool module_is_blacklisted(struct kmod_module *mod)
 {
        struct kmod_ctx *ctx = mod->ctx;
-       const struct kmod_list *bl = kmod_get_blacklists(ctx);
+       const struct kmod_config *config = kmod_get_config(ctx);
+       const struct kmod_list *bl = config->blacklists;
        const struct kmod_list *l;
 
        kmod_list_foreach(l, bl) {
@@ -1280,13 +1281,14 @@ KMOD_EXPORT const char *kmod_module_get_options(const struct kmod_module *mod)
        if (!mod->init.options) {
                /* lazy init */
                struct kmod_module *m = (struct kmod_module *)mod;
-               const struct kmod_list *l, *ctx_options;
+               const struct kmod_list *l;
+               const struct kmod_config *config;
                char *opts = NULL;
                size_t optslen = 0;
 
-               ctx_options = kmod_get_options(mod->ctx);
+               config = kmod_get_config(mod->ctx);
 
-               kmod_list_foreach(l, ctx_options) {
+               kmod_list_foreach(l, config->options) {
                        const char *modname = kmod_option_get_modname(l);
                        const char *str;
                        size_t len;
@@ -1354,11 +1356,12 @@ KMOD_EXPORT const char *kmod_module_get_install_commands(const struct kmod_modul
        if (!mod->init.install_commands) {
                /* lazy init */
                struct kmod_module *m = (struct kmod_module *)mod;
-               const struct kmod_list *l, *ctx_install_commands;
+               const struct kmod_list *l;
+               const struct kmod_config *config;
 
-               ctx_install_commands = kmod_get_install_commands(mod->ctx);
+               config = kmod_get_config(mod->ctx);
 
-               kmod_list_foreach(l, ctx_install_commands) {
+               kmod_list_foreach(l, config->install_commands) {
                        const char *modname = kmod_command_get_modname(l);
 
                        if (fnmatch(modname, mod->name, 0) != 0)
@@ -1426,7 +1429,8 @@ KMOD_EXPORT int kmod_module_get_softdeps(const struct kmod_module *mod,
                                                struct kmod_list **pre,
                                                struct kmod_list **post)
 {
-       const struct kmod_list *l, *ctx_softdeps;
+       const struct kmod_list *l;
+       const struct kmod_config *config;
 
        if (mod == NULL || pre == NULL || post == NULL)
                return -ENOENT;
@@ -1434,9 +1438,9 @@ KMOD_EXPORT int kmod_module_get_softdeps(const struct kmod_module *mod,
        assert(*pre == NULL);
        assert(*post == NULL);
 
-       ctx_softdeps = kmod_get_softdeps(mod->ctx);
+       config = kmod_get_config(mod->ctx);
 
-       kmod_list_foreach(l, ctx_softdeps) {
+       kmod_list_foreach(l, config->softdeps) {
                const char *modname = kmod_softdep_get_name(l);
                const char * const *array;
                unsigned count;
@@ -1481,11 +1485,12 @@ KMOD_EXPORT const char *kmod_module_get_remove_commands(const struct kmod_module
        if (!mod->init.remove_commands) {
                /* lazy init */
                struct kmod_module *m = (struct kmod_module *)mod;
-               const struct kmod_list *l, *ctx_remove_commands;
+               const struct kmod_list *l;
+               const struct kmod_config *config;
 
-               ctx_remove_commands = kmod_get_remove_commands(mod->ctx);
+               config = kmod_get_config(mod->ctx);
 
-               kmod_list_foreach(l, ctx_remove_commands) {
+               kmod_list_foreach(l, config->remove_commands) {
                        const char *modname = kmod_command_get_modname(l);
 
                        if (fnmatch(modname, mod->name, 0) != 0)
index f21e0a97829d8e57820b359027b0c90275ef47b2..7c2602d9e7762450006077878f12450d10829f58 100644 (file)
@@ -91,13 +91,7 @@ struct kmod_module *kmod_pool_get_module(struct kmod_ctx *ctx, const char *key)
 void kmod_pool_add_module(struct kmod_ctx *ctx, struct kmod_module *mod, const char *key) __attribute__((nonnull(1,2, 3)));
 void kmod_pool_del_module(struct kmod_ctx *ctx, struct kmod_module *mod, const char *key) __attribute__((nonnull(1,2, 3)));
 
-const struct kmod_list *kmod_get_blacklists(const struct kmod_ctx *ctx) _must_check_ __attribute__((nonnull(1)));
-const struct kmod_list *kmod_get_options(const struct kmod_ctx *ctx) _must_check_ __attribute__((nonnull(1)));
-const struct kmod_list *kmod_get_install_commands(const struct kmod_ctx *ctx) _must_check_ __attribute__((nonnull(1)));
-const struct kmod_list *kmod_get_remove_commands(const struct kmod_ctx *ctx) _must_check_ __attribute__((nonnull(1)));
-const struct kmod_list *kmod_get_softdeps(const struct kmod_ctx *ctx) _must_check_ __attribute__((nonnull(1)));
-const struct kmod_list *kmod_get_aliases(const struct kmod_ctx *ctx) _must_check_ __attribute__((nonnull(1)));
-
+const struct kmod_config *kmod_get_config(const struct kmod_ctx *ctx) __attribute__((nonnull(1)));
 
 /* libkmod-config.c */
 struct kmod_config_path {
index 36ca629bcf01b47ff9836b95c2e6f0c0c0a47003..14a8f1f0d3f65863e1e8434a8606be719aec9f6f 100644 (file)
@@ -896,32 +896,7 @@ KMOD_EXPORT int kmod_dump_index(struct kmod_ctx *ctx, enum kmod_index type,
        return 0;
 }
 
-const struct kmod_list *kmod_get_blacklists(const struct kmod_ctx *ctx)
+const struct kmod_config *kmod_get_config(const struct kmod_ctx *ctx)
 {
-       return ctx->config->blacklists;
-}
-
-const struct kmod_list *kmod_get_options(const struct kmod_ctx *ctx)
-{
-       return ctx->config->options;
-}
-
-const struct kmod_list *kmod_get_install_commands(const struct kmod_ctx *ctx)
-{
-       return ctx->config->install_commands;
-}
-
-const struct kmod_list *kmod_get_remove_commands(const struct kmod_ctx *ctx)
-{
-       return ctx->config->remove_commands;
-}
-
-const struct kmod_list *kmod_get_softdeps(const struct kmod_ctx *ctx)
-{
-       return ctx->config->softdeps;
-}
-
-const struct kmod_list *kmod_get_aliases(const struct kmod_ctx *ctx)
-{
-       return ctx->config->aliases;
+       return ctx->config;
 }