#include #include #include "kernelconf.h" #include "kernelconf.m" #define FS_FILE_MAX "fs.file-max" #define FS_INODE_MAX "fs.inode-max" #define FS_DQUOT_MAX "fs.dquot-max" #define FS_SUPER_MAX "fs.super-max" #define KERNEL_CTRL_ALT_DEL "kernel.ctrl-alt-del" #define KERNEL_FAIRSCHED "kernel.fairsched" #define KERNEL_SHMMAX "kernel.shmmax" #define KERNEL_SEM "kernel.sem" #define KERNEL_THREADS_MAX "kernel.threads-max" static HELP_FILE help_kernelconf("kernelconf","kernelconf"); class KERNELCONF_FIELD { protected: SYSCTL &sysctl; const char *varname; KERNELCONF_FIELD( SYSCTL &_sysctl, const char *_varname) : sysctl(_sysctl), varname(_varname) { } }; static long long kernel_atoL(const char *s, int no) { long long ret = -1; while (no > 0){ s = str_skip(s); s = str_skipdig(s); no--; } sscanf (s,"%Ld",&ret); return ret; } // Sysctl variable with multiple value class KERNELCONF_FIELD_INTS: public KERNELCONF_FIELD { protected: int var[10]; int divider[10]; int defval[10]; int nbvar; const char *varstr; public: KERNELCONF_FIELD_INTS( SYSCTL &_sysctl, const char *_varname) : KERNELCONF_FIELD(_sysctl,_varname) { varstr = NULL; nbvar=0; } void setfield ( int no, DIALOG &dia, const char *title, int _defval, int _divider, const int vals[], const char *namevals[]) { var[no] = -1; if (no >= nbvar) nbvar = no+1; divider[no] = _divider; varstr = sysctl.get_from_file(varname); if (varstr == NULL){ varstr = sysctl.get_from_sys(varname); if (varstr != NULL){ var[no] = -1; if (_defval == -1) _defval = kernel_atoL(varstr,no)/_divider; } }else{ var[no] = kernel_atoL(varstr,no)/_divider; if (_defval == -1) _defval = var[no]; } defval[no] = _defval; dia.newf_chkm_num(title,var[no],_defval,vals,namevals); } void update() { if (varstr != NULL) { bool isdef = true; SSTRING tmp; for (int i=0; i static PUBLISH_VARIABLES_MSG kernel_var_list[]={ {"maxfile",P_MSG_R(F_MAXFILE)}, {"maxinode",P_MSG_R(F_MAXINODE)}, {"dquotmax",P_MSG_R(F_MAXDQUOT)}, {"maxsuper",P_MSG_R(F_MAXSUPER)}, {"ctrlaltdel",P_MSG_R(F_CTRLALTDEL)}, {"fairsched",P_MSG_R(F_FAIRSCHED)}, {"maxshm",P_MSG_R(F_SHMMAX)}, {"threads-max",P_MSG_R(F_THREADSMAX)}, {"semmaxperid",P_MSG_R(F_SEMCONF1)}, {"semmaxsystem",P_MSG_R(F_SEMCONF2)}, {"semmaxopm",P_MSG_R(F_SEMCONF3)}, {"semmaxids",P_MSG_R(F_SEMCONF4)}, { NULL, NULL } }; static REGISTER_VARIABLES kernel_registry1("kernel",kernel_var_list ,NULL,kernelconf_edit0); // vim: nowrap