~registry/kmod/master

« back to all changes in this revision

Viewing changes to libkmod/libkmod-internal.h

  • Committer: Lucas De Marchi
  • Date: 2023-06-09 17:45:51 UTC
  • Revision ID: git-v1:7a86f1292051e990507ea48888864ff19626a206
libkmod: Do not inititialize file->memory on open

Add a separate function to load the file contents when it's needed.
When it's not needed on the path of loading modules via finit_module(),
there is no need to mmap the file. This will help support loading
modules with the in-kernel compression support.

This is done differently than the lazy initialization for
kmod_file_get_elf() because on the contents case there is also the
file->size to be updated. It would be a weird API to return the pointer
and have the size changed as a side-effect.

Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>

Show diffs side-by-side

added added

removed removed

Lines of Context:
152
152
/* libkmod-file.c */
153
153
struct kmod_file *kmod_file_open(const struct kmod_ctx *ctx, const char *filename) _must_check_ __attribute__((nonnull(1,2)));
154
154
struct kmod_elf *kmod_file_get_elf(struct kmod_file *file) __attribute__((nonnull(1)));
 
155
void kmod_file_load_contents(struct kmod_file *file) __attribute__((nonnull(1)));
155
156
void *kmod_file_get_contents(const struct kmod_file *file) _must_check_ __attribute__((nonnull(1)));
156
157
off_t kmod_file_get_size(const struct kmod_file *file) _must_check_ __attribute__((nonnull(1)));
157
158
bool kmod_file_get_direct(const struct kmod_file *file) _must_check_ __attribute__((nonnull(1)));
166
167
        char *symbol;
167
168
};
168
169
 
169
 
struct kmod_elf *kmod_elf_new(const void *memory, off_t size) _must_check_ __attribute__((nonnull(1)));
 
170
struct kmod_elf *kmod_elf_new(const void *memory, off_t size) _must_check_;
170
171
void kmod_elf_unref(struct kmod_elf *elf) __attribute__((nonnull(1)));
171
172
const void *kmod_elf_get_memory(const struct kmod_elf *elf) _must_check_ __attribute__((nonnull(1)));
172
173
int kmod_elf_get_strings(const struct kmod_elf *elf, const char *section, char ***array) _must_check_ __attribute__((nonnull(1,2,3)));