函数逻辑报告 |
Source Code:fs\notify\fanotify\fanotify_user.c |
Create Date:2022-07-29 10:50:22 |
Last Modify:2020-03-12 14:18:49 | Copyright©Brick |
首页 | 函数Tree |
注解内核,赢得工具 | 下载SCCT | English |
函数名称:anotify syscalls
函数原型:SYSCALL_DEFINE2(fanotify_init, unsigned int, flags, unsigned int, event_f_flags)
返回类型:
参数:无
773 | pr_debug("%s: flags=%x event_f_flags=%x\n", __func__, flags, event_f_flags) |
782 | 如果flags按位与FANOTIFY_INIT_FLAGS的反则返回:负EINVAL |
786 | 如果event_f_flags按位与All flags that may be specified in parameter event_f_flags of fanotify_init的反则返回:负EINVAL |
793 | 退出 |
794 | 默认 |
795 | 返回:负EINVAL |
798 | 如果flags按位与Report unique file id 且flags按位与Flags allowed to be passed from/to userspace的值不等于These are NOT bitwise flags. Both bits are used together. 则返回:负EINVAL |
802 | user等于get_current_user - Get the current task's user_struct* Get the user record of the current task, pinning it so that it can't go* away.() |
809 | 如果flags按位与lags used for fanotify_init() 则f_flags或等于O_CLOEXEC |
811 | 如果flags按位与FAN_NONBLOCK则f_flags或等于O_NONBLOCK |
816 | 如果是错误则 |
823 | atomic_inc( & fanotify_listeners) |
826 | oevent等于fanotify_alloc_event(group, NULL, Event queued overflowed , NULL, when calling fsnotify tell it if the data is a path or inode , NULL) |
828 | 如果此条件成立可能性小(为编译器优化)(!oevent)则 |
830 | 转到:out_destroy_group |
834 | 如果force_o_largefile()则event_f_flags或等于O_LARGEFILE |
836 | f_flags等于event_f_flags |
837 | init_waitqueue_head( & access_waitq) |
838 | 初始化链表头 |
842 | 退出 |
843 | 当: & == FAN_CLASS_CONTENT |
846 | 当: & == FAN_CLASS_PRE_CONTENT |
848 | 退出 |
849 | 默认 |
851 | 转到:out_destroy_group |
854 | 如果flags按位与FAN_UNLIMITED_QUEUE则 |
859 | 否则 |
863 | 如果flags按位与FAN_UNLIMITED_MARKS则 |
868 | 否则 |
872 | 如果flags按位与FAN_ENABLE_AUDIT则 |
874 | 如果非操作权限检查则转到:out_destroy_group |
879 | 如果fd小于0则转到:out_destroy_group |
882 | 返回:fd |
884 | out_destroy_group : |
886 | 返回:fd |
源代码转换工具 开放的插件接口 | X |
---|---|
支持:c/c++/esqlc/java Oracle/Informix/Mysql 插件可实现:逻辑报告 代码生成和批量转换代码 |