"save_and_cli(flag)"到底是如何运作的?
How "save_and_cli(flag)" really works?
我在为一个在嵌入式Linux中工作的程序跟踪一段代码时遇到了这个问题。我无法谷歌出有用的信息来告诉我它是如何工作的。
这段代码写成:
unsigned char foo(*someaddress){
unsigned long flags = 0; //why use a long?
flags = save_and_cli(); //what is this?
spin_lock_irqsave(&someaddress, flags);//ok, this is a spin lock
...do something...
restore_flags(flags); //release something?
spin_unlock_irqrestore(&someaddress, flags);//release lock
}
似乎这个长标志的值永远不会改变,什么是save_and_cli()函数?
IIRC save_and_cli
是local_irq_save
的"古代"版本
保存本地中断发送的当前状态,然后禁用它。
命令功能local_irq_restore
用于恢复local_irq_save
保存的irq状态
此处参考
相关文章:
- 函数何时会在c++中包含stack_Unwind_Resume调用
- Python中的for循环与C++有何不同
- C++核心准则 C35 对于接口类"A base class destructor should be either public and virtual, or protected and nonv
- 为什么C++逐位AND运算符在不同大小的操作数中表现为这样
- 为什么 Clang 不允许"and"作为函数名称?
- 位阵列上的快速AND运算
- 是否可以在 C++03 中定义'move-and-swap idiom'等效项
- BoostPython and CMake
- OpenSSL BIO and SSL_read
- 在C++中释放内存期间,迭代器与指针有何不同
- Gurobi GRBModel and GRBmodel in C++
- 寻找闰年的逻辑是如何运作的?
- std::visit and std::variant usage
- SHBrowseForFolder with BIF_BROWSEFORCOMPUTER and SHGetPathFr
- Directx12 and keystrokes
- different between int **arr =new int [ n]; and int a[i][j]?
- C++ getenv and setenv
- 标准对此指向成员函数类型模板参数有何说明?是我的代码有误,还是 MSVS 16.6 有问题?
- Inference pytorch C++ with alexnet and cv::imread image
- Visual Studio 2019 C++ and std::filesystem