硬汉嵌入式论坛

 找回密码
 立即注册
查看: 762|回复: 5
收起左侧

[μCOS-III] 关于ucos中断调用os的api的问题

[复制链接]

8

主题

19

回帖

43

积分

新手上路

积分
43
发表于 2024-9-10 23:06:10 | 显示全部楼层 |阅读模式
最近看源码发现很多很多和任务状态有关的函数都不能够在ISR中调用,PEND这种会阻塞的可以理解,但为什么挂起复原这种操作也不可以呢?我看操作不只是把任务从rdytable上拿走放回去,然后改一改任务状态之类的么?

然后再调用一个OSSched()。
但我看POST的操作中也会表用OSSched(),如果说是在中断中调用post操作,在退出中断后也会调用post操作,这不也重复了么。那应该和这个函数的调用没什么关系,而且post操作和resume操作也都会调用OS_RdyListInsert来操作就绪表。
我感觉他们对于调度涉及到的结构体的操作都是类似的。同时也会再去调用OSSched()来选择新的最高优先级任务去运行。那么禁止使用的原因会是什么呢?

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116219
QQ
发表于 2024-9-11 00:53:07 | 显示全部楼层
挂起不可以在中断里面调用主要是因为pend函数延迟时间,现在很多os支持延迟时间设置为0的情况下可以调用。相当于查询下状态。
回复

使用道具 举报

8

主题

19

回帖

43

积分

新手上路

积分
43
 楼主| 发表于 2024-9-11 09:25:03 | 显示全部楼层
eric2013 发表于 2024-9-11 00:53
挂起不可以在中断里面调用主要是因为pend函数延迟时间,现在很多os支持延迟时间设置为0的情况下可以调用。 ...

汉哥我好奇的是Suspend,Rusume甚至改优先级之类的操作,我看他们的函数内容不只是操作了一下就绪表么和任务状态么?和post的操作所设计的内核成员区别也不大呀。那是哪里导致了这几个任务函数不可以在中断中被调用呢
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116219
QQ
发表于 2024-9-12 07:40:25 | 显示全部楼层
tyty697 发表于 2024-9-11 09:25
汉哥我好奇的是Suspend,Rusume甚至改优先级之类的操作,我看他们的函数内容不只是操作了一下就绪表么和 ...

这个分OS,比如ThreadX就可以

12345.png
回复

使用道具 举报

8

主题

19

回帖

43

积分

新手上路

积分
43
 楼主| 发表于 2024-9-12 17:54:45 | 显示全部楼层
eric2013 发表于 2024-9-12 07:40
这个分OS,比如ThreadX就可以

感觉3.08和之前比变了好多啊,虽然内核的几个结构体还是那几个,但是对于中断,临界区的操作变了好多,延迟发布也取消了,时钟也要单独使能了。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116219
QQ
发表于 2024-9-13 10:05:44 | 显示全部楼层
tyty697 发表于 2024-9-12 17:54
感觉3.08和之前比变了好多啊,虽然内核的几个结构体还是那几个,但是对于中断,临界区的操作变了好多,延 ...

对,这个版本算是一个略微大点的更新。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-6-10 10:23 , Processed in 0.286090 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表