函数逻辑报告 |
Source Code:fs\notify\dnotify\dnotify.c |
Create Date:2022-07-29 10:48:47 |
Last Modify:2020-03-12 14:18:49 | Copyright©Brick |
首页 | 函数Tree |
注解内核,赢得工具 | 下载SCCT | English |
函数名称:When a process calls fcntl to attach a dnotify watch to a directory it ends* up here. Allocate both a mark for fsnotify to add and a dnotify_struct to be* attached to the fsnotify_mark.
函数原型:int fcntl_dirnotify(int fd, struct file *filp, unsigned long arg)
返回类型:int
参数:
类型 | 参数 | 名称 |
---|---|---|
int | fd | |
struct file * | filp | |
unsigned long | arg |
261 | new_fsn_mark = NULL |
262 | dn = NULL |
264 | 如果非dir_notify_enable则 |
270 | 如果arg按位与Don't remove notifier 的反的值恒等于0则 |
277 | inode等于file_inode(filp) |
289 | error等于security_path_notify( & f_path, mask, FSNOTIFY_OBJ_TYPE_INODE) |
296 | 如果非dn则 |
302 | new_dn_mark等于分配高速缓存区 |
303 | 如果非new_dn_mark则 |
309 | new_fsn_mark等于fsn_mark |
312 | dn = NULL |
315 | mutex_lock( & protect marks_list ) |
318 | fsn_mark等于Given a list of marks, find the mark associated with given group. If found* take a reference to that mark and return it, else return NULL. |
319 | 如果fsn_mark则 |
321 | 加自旋锁 |
322 | 否则 |
323 | error等于fsnotify_add_inode_mark_locked(new_fsn_mark, inode, 0) |
324 | 如果error则 |
326 | 转到:out_err |
328 | 加自旋锁 |
329 | fsn_mark等于new_fsn_mark |
330 | dn_mark等于new_dn_mark |
332 | new_fsn_mark = NULL |
357 | __f_setown(filp, task_pid(当前进程), PIDTYPE_TGID, 0) |
369 | out : |
370 | 自旋锁解锁 |
375 | 如果destroy则Free fsnotify mark |
378 | out_err : |
381 | 如果dn则kmem_cache_free(dnotify_struct_cache, dn) |
383 | 返回:error |
名称 | 描述 |
---|---|
do_fcntl |
源代码转换工具 开放的插件接口 | X |
---|---|
支持:c/c++/esqlc/java Oracle/Informix/Mysql 插件可实现:逻辑报告 代码生成和批量转换代码 |