函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:kernel\sysctl.c Create Date:2022-07-27 10:11:25
Last Modify:2020-03-12 14:18:49 Copyright©Brick
首页 函数Tree
注解内核,赢得工具下载SCCTEnglish

函数名称:__do_proc_doulongvec_minmax

函数原型:static int __do_proc_doulongvec_minmax(void *data, struct ctl_table *table, int write, void __user *buffer, size_t *lenp, loff_t *ppos, unsigned long convmul, unsigned long convdiv)

返回类型:int

参数:

类型参数名称
void *data
struct ctl_table *table
intwrite
void __user *buffer
size_t *lenp
loff_t *ppos
unsigned longconvmul
unsigned longconvdiv
2854  first等于1, err等于0
2856  kbuf等于NULL
2858  如果非data或非maxlen或非lenpppos且非write
2859  lenp等于0
2860  返回:0
2863  i等于data
2864  min等于extra1
2865  max等于extra2
2866  vleft等于maxlensizeof(unsignedlong)
2867  left等于lenp
2869  如果write
2870  如果proc_first_pos_non_zero_ignore - check if first position is allowed*@ppos: file position*@table: the sysctl table* Returns true if the first position is non-zero and the sysctl_writes_strict* mode indicates this is not allowed for numeric input types则转到:out
2873  如果left大于PAGE_SIZE减1则left等于PAGE_SIZE减1
2875  p等于kbuf等于memdup_user_nul(buffer, left)
2876  如果是错误则返回:错误
2880 leftvleft自减循环
2883  如果write
2886  left减等于proc_skip_spaces( & p)
2887  如果非left退出
2893  如果err退出
2895  如果neg则继续下一循环
2897  val等于convmulvalconvdiv
2898  如果minval小于minmaxval大于max
2899  err等于负EINVAL
2900  退出
2902  i等于val
2903  否则
2904  val等于convdiviconvmul
2905  如果非first
2906  err等于proc_put_char( & buffer, & left, '\t')
2907  如果err退出
2911  如果err退出
2916  如果非write且非firstleft且非errerr等于proc_put_char( & buffer, & left, '\n')
2918  如果write且非errleft减等于proc_skip_spaces( & p)
2920  如果write
2921  释放内存
2922  如果first则返回:如果err否则负EINVAL
2925  lenp减等于left
2926  out :
2927  ppos加等于lenp
2928  返回:err
调用者
名称描述
do_proc_doulongvec_minmax