]> git.ipfire.org Git - thirdparty/kmod.git/commitdiff
index: mm: Add flag to open call to populate buffer
authorLucas De Marchi <lucas.demarchi@profusion.mobi>
Thu, 8 Dec 2011 17:10:55 +0000 (15:10 -0200)
committerLucas De Marchi <lucas.demarchi@profusion.mobi>
Thu, 8 Dec 2011 21:51:06 +0000 (19:51 -0200)
libkmod/libkmod-index.c
libkmod/libkmod-index.h

index bfabd10d6211759619a5f93bd066e49a3bf06a65..ce4ad6aad6c6f01de224d496a8c1c2f81e7b7ca5 100644 (file)
@@ -654,9 +654,11 @@ static void index_mm_free_node(struct index_mm_node *node)
        free(node);
 }
 
-struct index_mm *index_mm_open(struct kmod_ctx *ctx, const char *filename)
+struct index_mm *index_mm_open(struct kmod_ctx *ctx, const char *filename,
+                                                               bool populate)
 {
        int fd;
+       int flags;
        struct stat st;
        struct index_mm *idx;
        struct {
@@ -681,9 +683,12 @@ struct index_mm *index_mm_open(struct kmod_ctx *ctx, const char *filename)
                goto fail;
        }
 
-       if ((idx->mm = mmap(0, st.st_size, PROT_READ,
-                               MAP_PRIVATE | MAP_POPULATE,
-                               fd, 0)) == MAP_FAILED) {
+       flags = MAP_PRIVATE;
+       if (populate)
+               flags |= MAP_POPULATE;
+
+       if ((idx->mm = mmap(0, st.st_size, PROT_READ, flags, fd, 0))
+                                                       == MAP_FAILED) {
                ERR(ctx, "%m\n");
                goto fail;
        }
index ae44b25e28e1ebed24e0399115b3e7214ac5746a..a6aba5e8eb37a0b9c0349b3e9a4361682add7b49 100644 (file)
@@ -167,7 +167,8 @@ void index_values_free(struct index_value *values);
 
 /* Implementation using mmap */
 struct index_mm;
-struct index_mm *index_mm_open(struct kmod_ctx *ctx, const char *filename);
+struct index_mm *index_mm_open(struct kmod_ctx *ctx, const char *filename,
+                                                               bool populate);
 void index_mm_close(struct index_mm *index);
 char *index_mm_search(struct index_mm *idx, const char *key);
 struct index_value *index_mm_searchwild(struct index_mm *idx, const char *key);