1*cc4ad7daSAndroid Build Coastguard Worker /* 2*cc4ad7daSAndroid Build Coastguard Worker * libkmod - interface to kernel module operations 3*cc4ad7daSAndroid Build Coastguard Worker * 4*cc4ad7daSAndroid Build Coastguard Worker * Copyright (C) 2011-2013 ProFUSION embedded systems 5*cc4ad7daSAndroid Build Coastguard Worker * 6*cc4ad7daSAndroid Build Coastguard Worker * This library is free software; you can redistribute it and/or 7*cc4ad7daSAndroid Build Coastguard Worker * modify it under the terms of the GNU Lesser General Public 8*cc4ad7daSAndroid Build Coastguard Worker * License as published by the Free Software Foundation; either 9*cc4ad7daSAndroid Build Coastguard Worker * version 2.1 of the License, or (at your option) any later version. 10*cc4ad7daSAndroid Build Coastguard Worker * 11*cc4ad7daSAndroid Build Coastguard Worker * This library is distributed in the hope that it will be useful, 12*cc4ad7daSAndroid Build Coastguard Worker * but WITHOUT ANY WARRANTY; without even the implied warranty of 13*cc4ad7daSAndroid Build Coastguard Worker * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14*cc4ad7daSAndroid Build Coastguard Worker * Lesser General Public License for more details. 15*cc4ad7daSAndroid Build Coastguard Worker * 16*cc4ad7daSAndroid Build Coastguard Worker * You should have received a copy of the GNU Lesser General Public 17*cc4ad7daSAndroid Build Coastguard Worker * License along with this library; if not, see <http://www.gnu.org/licenses/>. 18*cc4ad7daSAndroid Build Coastguard Worker */ 19*cc4ad7daSAndroid Build Coastguard Worker 20*cc4ad7daSAndroid Build Coastguard Worker #pragma once 21*cc4ad7daSAndroid Build Coastguard Worker 22*cc4ad7daSAndroid Build Coastguard Worker #include <inttypes.h> 23*cc4ad7daSAndroid Build Coastguard Worker 24*cc4ad7daSAndroid Build Coastguard Worker struct index_value { 25*cc4ad7daSAndroid Build Coastguard Worker struct index_value *next; 26*cc4ad7daSAndroid Build Coastguard Worker unsigned int priority; 27*cc4ad7daSAndroid Build Coastguard Worker unsigned int len; 28*cc4ad7daSAndroid Build Coastguard Worker char value[0]; 29*cc4ad7daSAndroid Build Coastguard Worker }; 30*cc4ad7daSAndroid Build Coastguard Worker 31*cc4ad7daSAndroid Build Coastguard Worker /* In-memory index (depmod only) */ 32*cc4ad7daSAndroid Build Coastguard Worker struct index_file; 33*cc4ad7daSAndroid Build Coastguard Worker struct index_file *index_file_open(const char *filename); 34*cc4ad7daSAndroid Build Coastguard Worker void index_file_close(struct index_file *idx); 35*cc4ad7daSAndroid Build Coastguard Worker char *index_search(struct index_file *idx, const char *key); 36*cc4ad7daSAndroid Build Coastguard Worker void index_dump(struct index_file *in, int fd, const char *prefix); 37*cc4ad7daSAndroid Build Coastguard Worker struct index_value *index_searchwild(struct index_file *idx, const char *key); 38*cc4ad7daSAndroid Build Coastguard Worker 39*cc4ad7daSAndroid Build Coastguard Worker void index_values_free(struct index_value *values); 40*cc4ad7daSAndroid Build Coastguard Worker 41*cc4ad7daSAndroid Build Coastguard Worker /* Implementation using mmap */ 42*cc4ad7daSAndroid Build Coastguard Worker struct index_mm; 43*cc4ad7daSAndroid Build Coastguard Worker int index_mm_open(const struct kmod_ctx *ctx, const char *filename, 44*cc4ad7daSAndroid Build Coastguard Worker unsigned long long *stamp, struct index_mm **pidx); 45*cc4ad7daSAndroid Build Coastguard Worker void index_mm_close(struct index_mm *index); 46*cc4ad7daSAndroid Build Coastguard Worker char *index_mm_search(struct index_mm *idx, const char *key); 47*cc4ad7daSAndroid Build Coastguard Worker struct index_value *index_mm_searchwild(struct index_mm *idx, const char *key); 48*cc4ad7daSAndroid Build Coastguard Worker void index_mm_dump(struct index_mm *idx, int fd, const char *prefix); 49