函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

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

函数名称:__do_proc_dointvec

函数原型:static int __do_proc_dointvec(void *tbl_data, struct ctl_table *table, int write, void __user *buffer, size_t *lenp, loff_t *ppos, int (*conv)(bool *negp, unsigned long *lvalp, int *valp, int write, void *data), void *data)

返回类型:int

参数:

类型参数名称
void *tbl_data
struct ctl_table *table
intwrite
void __user *buffer
size_t *lenp
loff_t *ppos
int (*conv
void *data
2340  first等于1, err等于0
2342  kbuf等于NULL
2344  如果非tbl_data或非maxlen或非lenpppos且非write
2345  lenp等于0
2346  返回:0
2349  i等于tbl_data
2350  vleft等于maxleni的长度
2351  left等于lenp
2353  如果非convconv等于do_proc_dointvec_conv
2356  如果write
2357  如果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
2360  如果left大于PAGE_SIZE减1则left等于PAGE_SIZE减1
2362  p等于kbuf等于memdup_user_nul(buffer, left)
2363  如果是错误则返回:错误
2367 leftvleft自减循环
2371  如果write
2372  left减等于proc_skip_spaces( & p)
2374  如果非left退出
2379  如果err退出
2381  如果conv( & neg, & lval, i, 1, data)则
2382  err等于负EINVAL
2383  退出
2385  否则
2386  如果conv( & neg, & lval, i, 0, data)则
2387  err等于负EINVAL
2388  退出
2390  如果非firsterr等于proc_put_char( & buffer, & left, '\t')
2392  如果err退出
2395  如果err退出
2400  如果非write且非firstleft且非errerr等于proc_put_char( & buffer, & left, '\n')
2402  如果write且非errleftleft减等于proc_skip_spaces( & p)
2404  如果write
2405  释放内存
2406  如果first则返回:如果err否则负EINVAL
2409  lenp减等于left
2410  out :
2411  ppos加等于lenp
2412  返回:err
调用者
名称描述
do_proc_dointvec
proc_do_cad_pid