]> git.ipfire.org Git - thirdparty/kmod.git/commitdiff
file: take a weakref to ctx
authorLucas De Marchi <lucas.demarchi@profusion.mobi>
Wed, 4 Jan 2012 10:19:34 +0000 (08:19 -0200)
committerLucas De Marchi <lucas.demarchi@profusion.mobi>
Wed, 4 Jan 2012 10:49:15 +0000 (08:49 -0200)
libkmod/libkmod-file.c
libkmod/libkmod-module.c
libkmod/libkmod-private.h

index 809c7cdd7f67a281a400743b46a4ad22187636fb..4ea2a8ddeea4ae74ff1871baeff7052812eeae3a 100644 (file)
@@ -55,6 +55,7 @@ struct kmod_file {
        off_t size;
        void *memory;
        const struct file_ops *ops;
+       const struct kmod_ctx *ctx;
 };
 
 #ifdef ENABLE_XZ
@@ -261,7 +262,8 @@ static const struct file_ops reg_ops = {
        load_reg, unload_reg
 };
 
-struct kmod_file *kmod_file_open(const char *filename)
+struct kmod_file *kmod_file_open(const struct kmod_ctx *ctx,
+                                               const char *filename)
 {
        struct kmod_file *file = calloc(1, sizeof(struct kmod_file));
        const struct comp_type *itr;
@@ -312,6 +314,7 @@ struct kmod_file *kmod_file_open(const char *filename)
                file->ops = &reg_ops;
 
        err = file->ops->load(file);
+       file->ctx = ctx;
 error:
        if (err < 0) {
                if (file->fd >= 0)
index b0cee364ea187c997cd6d4e3d0103979f95346af..127975939ce871cb08cf5da969ac55ae87d6cb92 100644 (file)
@@ -762,7 +762,7 @@ KMOD_EXPORT int kmod_module_insert_module(struct kmod_module *mod,
                return -ENOSYS;
        }
 
-       file = kmod_file_open(path);
+       file = kmod_file_open(mod->ctx, path);
        if (file == NULL) {
                err = -errno;
                return err;
@@ -1938,7 +1938,7 @@ KMOD_EXPORT int kmod_module_get_info(const struct kmod_module *mod, struct kmod_
        if (path == NULL)
                return -ENOENT;
 
-       file = kmod_file_open(path);
+       file = kmod_file_open(mod->ctx, path);
        if (file == NULL)
                return -errno;
 
@@ -2116,7 +2116,7 @@ KMOD_EXPORT int kmod_module_get_versions(const struct kmod_module *mod, struct k
        if (path == NULL)
                return -ENOENT;
 
-       file = kmod_file_open(path);
+       file = kmod_file_open(mod->ctx, path);
        if (file == NULL)
                return -errno;
 
@@ -2281,7 +2281,7 @@ KMOD_EXPORT int kmod_module_get_symbols(const struct kmod_module *mod, struct km
        if (path == NULL)
                return -ENOENT;
 
-       file = kmod_file_open(path);
+       file = kmod_file_open(mod->ctx, path);
        if (file == NULL)
                return -errno;
 
@@ -2449,7 +2449,7 @@ KMOD_EXPORT int kmod_module_get_dependency_symbols(const struct kmod_module *mod
        if (path == NULL)
                return -ENOENT;
 
-       file = kmod_file_open(path);
+       file = kmod_file_open(mod->ctx, path);
        if (file == NULL)
                return -errno;
 
index 71f8c2066893b2e5bcbe5f84649f73b4c075dc48..cdeaee57d327082971cf824724f816ef20c8985c 100644 (file)
@@ -140,7 +140,7 @@ void kmod_module_set_remove_commands(struct kmod_module *mod, const char *cmd) _
 #include "libkmod-hash.h"
 
 /* libkmod-file.c */
-struct kmod_file *kmod_file_open(const char *filename) __must_check __attribute__((nonnull(1)));
+struct kmod_file *kmod_file_open(const struct kmod_ctx *ctx, const char *filename) __must_check __attribute__((nonnull(1,2)));
 void *kmod_file_get_contents(const struct kmod_file *file) __must_check __attribute__((nonnull(1)));
 off_t kmod_file_get_size(const struct kmod_file *file) __must_check __attribute__((nonnull(1)));
 void kmod_file_unref(struct kmod_file *file) __attribute__((nonnull(1)));