setup.h
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:1k
- /*
- setup.h (c) 1997-8 Grant R. Guenther <grant@torque.net>
- Under the terms of the GNU General Public License.
- This is a table driven setup function for kernel modules
- using the module.variable=val,... command line notation.
- */
- /* Changes:
- 1.01 GRG 1998.05.05 Allow negative and defaulted values
- */
- #include <linux/ctype.h>
- #include <linux/string.h>
- struct setup_tab_t {
- char *tag; /* variable name */
- int size; /* number of elements in array */
- int *iv; /* pointer to variable */
- };
- typedef struct setup_tab_t STT;
- /* t is a table that describes the variables that can be set
- by gen_setup
- n is the number of entries in the table
- ss is a string of the form:
- <tag>=[<val>,...]<val>
- */
- static void generic_setup( STT t[], int n, char *ss )
- { int j,k, sgn;
- k = 0;
- for (j=0;j<n;j++) {
- k = strlen(t[j].tag);
- if (strncmp(ss,t[j].tag,k) == 0) break;
- }
- if (j == n) return;
- if (ss[k] == 0) {
- t[j].iv[0] = 1;
- return;
- }
- if (ss[k] != '=') return;
- ss += (k+1);
- k = 0;
- while (ss && (k < t[j].size)) {
- if (!*ss) break;
- sgn = 1;
- if (*ss == '-') { ss++; sgn = -1; }
- if (!*ss) break;
- if (isdigit(*ss))
- t[j].iv[k] = sgn * simple_strtoul(ss,NULL,0);
- k++;
- if ((ss = strchr(ss,',')) != NULL) ss++;
- }
- }
- /* end of setup.h */