-
Notifications
You must be signed in to change notification settings - Fork 5.3k
Add the system call epoll #7893
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
| struct rt_fd_list *next; | ||
| }; | ||
|
|
||
| struct rt_rdllist |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
这个的全称是?需要给出全称的注释
| rt_wqueue_init(&ep->epoll_read); | ||
| } | ||
|
|
||
| static int epoll_epf_init(int fd) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
epf的全称是?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
eventpoll file
|
|
||
| timeout = rt_tick_from_millisecond(msec); | ||
|
|
||
| level = rt_hw_interrupt_disable(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
不再建议使用rt_hw_interrupt_disable函数了,可以使用mutex显式的锁,或者使用rt_spin_lock_irqsave/rt_spin_unlock_irqrestore函数。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
好像ep本身也有个mutex,使用mutex来lock/unlock是否可以?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
那使用 rt_spin_lock_irqsave/rt_spin_unlock_irqrestore 。 mutex 的话,如果被高优先级进行中断,可能会造成问题。
|
|
||
| int epoll_pwait2(int epfd, struct epoll_event *events, int maxevents, int timeout, const sigset_t *ss) | ||
| { | ||
| return do_epoll_wait(epfd, events, maxevents, timeout, ss); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
几个函数更建议改成:
- epoll_do_wait
- epoll_do_ctrl
- epoll_do_create
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
好的
| { | ||
| int exclusive;/* If triggered horizontally, a check is made to see if the data has been read, and if there is any data left to read, the readability event is returned in the next epoll_wait */ | ||
| struct rt_fd_list *rdl_event; | ||
| struct rt_rdllist *next; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
是否rt_ready_list更合理?
| } | ||
| else | ||
| { | ||
| return -1; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
尽可能单出口:
static int epoll_ctl_mod(struct dfs_file *df ,struct epoll_event *event)
{
rt_err_t ret = 0;
struct rt_fd_list *fdlist;
struct rt_eventpoll *ep = RT_NULL;
if (df->vnode && df->vnode->data)
{
ep = df->vnode->data;
fdlist = ep->fdlist;
while (fdlist->next != RT_NULL)
{
if (fdlist->next->epev.data.fd == event->data.fd)
{
fdlist->next->epev.events = event->events;
fdlist->next->revents = event->events;
rt_wqueue_remove(&fdlist->next->wqn);
epoll_ctl_install(fdlist->next, ep);
break;
}
fdlist = fdlist->next;
}
}
else
{
ret = -1;
}
return ret;
}|
epoll整理好了,建议提供一份说明文档,说明epoll的原理是什么样的。 |
|
这个可以在mcu下面跑起来吗?这个配置项MCU即不开启smart也是可以选择开启的 |
…with rt_spin_lock_irqsave, add epoll restrictions,
* [bsp][rt-spark] Update README.md * [ci][action] add the repo check for self-use * [bsp][stm32] add B-U585I-IOT02A BSP (RT-Thread#7778) B-U585I-IOT02A芯片为STM32U585AIIxQ,与stm32u575-st-nucleo板卡接近,因此参考stm32u575-st-nucleo对B-U585I-IOT02A板卡的BSP进行了实现 * [bsp][Infineon] Add I2C4 config for psoc6-evaluationkit * [SAL/SOCKET]修复在 RT_DEBUG 开启后,调用 closesocket 接口触发断言的 BUG * 【dd2.0】Support the Core API for dd2.0 (RT-Thread#7791) * [libcpu]fix RT_ASSERT undefine (RT-Thread#7816) * [components][i2c] 优化 controt 接口格式,增加可用命令 (RT-Thread#7806) 原来 rt_i2c_control 只能执行 RT_I2C_DEV_CTRL_CLK 单一命令,通过此修改可以支持更多可用命令 * [libcpu][cortex-a]modified start_gcc.S (RT-Thread#7810) * AArch64: fixup fpu storage's size in stack and append Q16 ~ Q31 (RT-Thread#7815) Signed-off-by: GuEe-GUI <GuEe-GUI@github.com> * [time]时钟框架重构 (RT-Thread#7794) * [libcpu][arc]修复arc架构线程切换bug (RT-Thread#7825) * [add] add msp432e401y-LaunchPad BSP v0.1 * [bsp][Infineon]fix i2c init error (RT-Thread#7817) 添加iic4的配置,将初始化错误断言部分修改为打印方式 * [github] Add the code_owner review quest * [component/lwp] support more feature of signal from IEEE Std 1003.1-2017 (RT-Thread#7828) Signed-off-by: Shell <smokewood@qq.com> * [bsp][stm32][airm2m]<pin>更新pin num命令 (RT-Thread#7390) * [components][net][sal][socket] Fix duplicate free on allocated buffer - Avoid duplicate free as the d->vnode will be freed in the fd_release API call Signed-off-by: Fan YANG <fan.yang@hpmicro.com> * ✨ feat(ktime): add RT_USING_KTIME to kconfig build * [github] coder reviewer change * overflow is invalid in oneshot mode * [libc][time] cleanup code * [smart] fix possible memory leak (RT-Thread#7832) Signed-off-by: Shell <smokewood@qq.com> * [debug] 整理debug宏并增加RT_DEBUGING_CONTEXT (RT-Thread#7805) * clean up rtthread.h (RT-Thread#7843) * [ci] add paths-ignore for format and static check (RT-Thread#7845) * [ci] update code owner (RT-Thread#7846) * modify some function prototypes of the dfs_file_ops structure and the function declarations based on it (RT-Thread#7849) * [tools][mdk] fix .uvoptx/uvopt project name e.g. scons --target=mdk5/4 --project-path='test' will generate the test.uvoptx/uvopt file correctly * [tools] --project-name= can use name with space * [doc][env] update env document * [smart] 修复用户态 mq_receive 不能阻塞 (RT-Thread#7836) * [bsp][esp32-c3] Realization of scons compilation of ESP32-C3 | 实现ESP32-C3的scons编译 (RT-Thread#7821) Co-authored-by: Supper Thomas <78900636@qq.com> * [libcpu/arm] fix race condition with ldrex,strex (RT-Thread#7842) Signed-off-by: Shell <smokewood@qq.com> * 更新瑞萨相关 bsp (RT-Thread#7858) * AArch64: fixup HW atomic_t ops type from dword to qword (RT-Thread#7861) Signed-off-by: GuEe-GUI <GuEe-GUI@github.com> * [smart] fix the setup of fake lwp in sys_execve (RT-Thread#7855) * AArch64: support public linker scripts (RT-Thread#7831) Signed-off-by: GuEe-GUI <GuEe-GUI@github.com> * [bsp][wch] fix UART IRQ declarion 将UART4后的中断函数声明改为UART * [docs][qemu] update quick_start_qemu_windows * [codeowners] add /documentation owners * [doc][qemu] update qemu for windows doc * [debug] fix the error when disable RT_USING_DEBUG * 【dd2.0】move the core header files to include/drivers/core * 🐞 fix(ktime): fix wrong boottime 因为tick从中断到设置中间的时延特别大,因此暂不采用tick做基准时间,直接取gtime的cnt做基准时间 * 🐞 fix(rtc/soft_rtc): fix wrong time use boottime as soft_rtc time source * 🐞 fix(ktime/hrtimer): fix ctrl c * 📃 docs(ktime/readme): add readme * [dfs v2]fix fcntl(F_SETFL) bug,and modify the error code when opening… (RT-Thread#7878) * [syscall][socket]fix socket addr bug (RT-Thread#7876) * Add the system call eventfd (RT-Thread#7835) * [debug] use LOG_D instead RT_DEBUG_LOG related: RT-Thread#7799 * [drivers/core] revise the macros of header files the macros is too common to use so that to avoid conflicts * [drivers/ipc] fix the recursive including if legacy enabled * [ci][kconfig][qemu] guard the legacy option * [.github] add CONTRIBUTING.md https://docs.github.com/en/communities/setting-up-your-project-for-healthy-contributions/setting-guidelines-for-repository-contributors * [docs] add env vscode document * [bsp][pico]add: drv_spi and drv_i2c * [components/ctime] fix the free of rt_work (RT-Thread#7882) Signed-off-by: Shell <smokewood@qq.com> * [libcpu/Kconfig] add ARCH_ARM_CORTEX_M23 define (RT-Thread#7895) * [components][fal] remove some assert. * [components][utilities][var_export] update the var export auto init to board_init. * [sdio]开启emmc内部cache加快传输 (RT-Thread#7896) * Add the system call epoll (RT-Thread#7893) * [RTduino][stm32-f401nucleo] 支持对接引脚的功能切换 (RT-Thread#7901) * Prepare some api for DM (RT-Thread#7894) Signed-off-by: GuEe-GUI <GuEe-GUI@github.com> * [bsp] phytium e2000 update (RT-Thread#7900) Co-authored-by: zhugengyu <zhugengyu@phytium.com.cn> * update dfs (RT-Thread#7887) * [bsp][renesas]update ra6m3&4 readme * [lwp] 修复错误码误用 (RT-Thread#7906) * [DFS_V1] 修复close失败后不释放fd导致内存被永久占用且无法释放 (RT-Thread#7907) * [components][drivers][sdio] Fix minor issue in sdio driver (RT-Thread#7904) Signed-off-by: Fan YANG <fan.yang@hpmicro.com> * [smart] Fix bugs on lwp kill (RT-Thread#7892) Signed-off-by: Shell <smokewood@qq.com> * Add fops for dfs_v2 and rt_set_errno (RT-Thread#7910) * [kernel][mutex] 去除mutex中的递归 * [bsp][stm32][drv_spi.c] remove meaningless settings * [bsp][Phytium] qspi debug (RT-Thread#7914) * [ci] add the manual trigger;add the fail bsp check (RT-Thread#7919) * [rtduino][stm32-f401] support timer9 as tone timer * [rtduino][stm32-l476] add LED_BUILTIN * [bsp][stm32h750_artpi] use gnu99 * fix some variables not used warnings when build. (RT-Thread#7925) * update components & lwp. (RT-Thread#7888) * avoid warning message of sequence-point board/ports/touch/gt911/src/gt911.c: warning: operation on '*(config + 8)' may be undefined [-Wsequence-point] config[8] = config[8] ^= (1 << 3); ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~ * [libc][time] silence the incorrect type warning * rt_hw_cpu_reset: remove all other rt_weak * rt_hw_cpu_shutdown: implement default weak function and remvoe duplicated default functions in each cpu/bsp level * [libcpu][risc-v][common] Avoid using t0 before being saved - Fixed the issue that t0 was modified unexpectedly before being saved Signed-off-by: Fan YANG <fan.yang@hpmicro.com> * [stm32][pandora] fix LCD init ahead PWM * [SAL] fix the IPv4&v6 compiling issue. (RT-Thread#7938) * [bsp/ifx] add cyw43012 wifi module * [libcpu][risc-v][common] Fix application crash on risc-v soc if FPU is enabled - Defined ARCH_RISCV_FPU once the __riscv_flen macro was detected Signed-off-by: Fan YANG <fan.yang@hpmicro.com> * fix dfs_file_open error code (RT-Thread#7942) * fix mkdir error code. (RT-Thread#7944) * fix lwp_free tty switch to foreground error (RT-Thread#7945) * [libc][timezone] implement lightweith timezone configuration * [device][rtc] support output UTC minutes level * [libc][time] pre-support fully version timezone and daylight saving time * [bsp][stm32][rt-spark] 更新 cubemx ports * [bsp][hpmicro] Update libraries, add new BSPs - Updated hpm_sdk in libraries - Updated rt-thread driver adapter - Updated bsp for hpm6750evkmini - Updated bsp for hpm6750evk - Added bsp for hpm6750evk2 - Added bsp for hpm6300evk - Added bsp for hpm6200evk Signed-off-by: Fan YANG <fan.yang@hpmicro.com> * fix msh exec permission denied (RT-Thread#7943) * 🎈 perf(ktime): perf hrtimer, del wrong function (RT-Thread#7880) * [components/mm] add unmap page API (RT-Thread#7834) Signed-off-by: Shell <smokewood@qq.com> * [libc][posix/io/stdio] rename libc.c as posix/stdio.c * [libc][newlib] __sdidinit is obselete related: RT-Thread#7923 mirror/newlib-cygwin@44b60f0 Co-authored-by: Meco Man <920369182@qq.com> * [components][drivers][can]Init can tx completion flag before tx * [DFS_V1]修复 dfs_file_stat 一个 FATFS 根目录会失败的问题 (RT-Thread#7940) * fix list_page (RT-Thread#7968) * [bsp][gd32]添加 立创开发板 GD32F470 的 SDRAM驱动,从STM32的drv_sdram.c修改而来 * [tools][gcc] remove legacy functions - GenerateGCCConfig - GenCconfigFile * [tools] add GetGCCLikePLATFORM GCC like means the toolchains which are compatible with GCC * [ci] Add more config for future use --------- Signed-off-by: GuEe-GUI <GuEe-GUI@github.com> Signed-off-by: Shell <smokewood@qq.com> Signed-off-by: Fan YANG <fan.yang@hpmicro.com> Co-authored-by: Zheng-Bicheng <58363586+Zheng-Bicheng@users.noreply.github.com> Co-authored-by: Siwei Xu <xusiwei1236@qq.com> Co-authored-by: yanghaiyong <yanghaiyong@rt-thread.com> Co-authored-by: ErikChanHub <33407169+ErikChanHub@users.noreply.github.com> Co-authored-by: sp-cai <70000077+sp-cai@users.noreply.github.com> Co-authored-by: lepus <lepustse@gmail.com> Co-authored-by: GUI <39894654+GuEe-GUI@users.noreply.github.com> Co-authored-by: xqyjlj <xqyjlj@126.com> Co-authored-by: yby <115077689+yby-oy@users.noreply.github.com> Co-authored-by: yby <1632443748@qq.com> Co-authored-by: Rbb666 <64397326+Rbb666@users.noreply.github.com> Co-authored-by: Shell <smokewood@qq.com> Co-authored-by: wangqinglin <53550140+HelloByeAll@users.noreply.github.com> Co-authored-by: Fan YANG <fan.yang@hpmicro.com> Co-authored-by: Mr.M <64891884+martin-calvin@users.noreply.github.com> Co-authored-by: Meco Man <920369182@qq.com> Co-authored-by: xiao-mang <53597406+xiao-mang@users.noreply.github.com> Co-authored-by: zhkag <zhkag@foxmail.com> Co-authored-by: WCX <timwcx@qq.com> Co-authored-by: guo <guozhanxin@rt-thread.com> Co-authored-by: bxhsiman <64024208+bxhsiman@users.noreply.github.com> Co-authored-by: erikchan <1043490933@qq.com> Co-authored-by: Tennn11 <88527847+Tennn11@users.noreply.github.com> Co-authored-by: zmq810150896 <50894086+zmq810150896@users.noreply.github.com> Co-authored-by: Shicheng Chu <1468559561@qq.com> Co-authored-by: 朱天龙 (Armink) <armink.ztl@gmail.com> Co-authored-by: heyuanjie87 <sc943313837@gmail.com> Co-authored-by: liYangYang <941843540@qq.com> Co-authored-by: zhangyan <103986797+messigogogo@users.noreply.github.com> Co-authored-by: zhugengyu <zhugengyu@phytium.com.cn> Co-authored-by: geniusgogo <2041245+geniusgogo@users.noreply.github.com> Co-authored-by: Rbb666 <zhangbingru@rt-thread.com> Co-authored-by: Junjie Wang <34395906+WKJay@users.noreply.github.com> Co-authored-by: Fan Yang <93824713+helloeagleyang@users.noreply.github.com> Co-authored-by: vacabun <maguotong66@gmail.com> Co-authored-by: DingDing <newflydd@gmail.com> Co-authored-by: KunYi Chen <kunyi.chen@gmail.com> Co-authored-by: cx <1253176313@qq.com> Co-authored-by: Bernard Xiong <bernard.xiong@gmail.com> Co-authored-by: FragrantRye <903465575@qq.com> Co-authored-by: cmbjxxiao <48663789+cmbjxxiao@users.noreply.github.com> Co-authored-by: yuanzihao <y@yzh.email>
拉取/合并请求描述:(PR description)
为什么提交这份PR (why to submit this PR)
添加epoll 系统调用
你的解决方案是什么 (what is your solution)
在什么测试环境下测试通过 (what is the test environment)
qemu-virt64-aarch64
当前拉取/合并请求的状态 Intent for your PR
必须选择一项 Choose one (Mandatory):
代码质量 Code Quality:
我在这个拉取/合并请求中已经考虑了 As part of this pull request, I've considered the following:
#if 0代码,不包含已经被注释了的代码 All redundant code is removed and cleaned up