RichardUSTC

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

2013年4月23日

摘要: 最近做的项目跟Linux内核的关系比较大,我们的项目需要在用户态触发一些内核态的代码运行。众所周知,内核态的代码是不能直接被用户态代码调用的,用户态代码触发内核态代码的必须要经过系统调用。为什么选择ioctl那么该如何实现我们的需求呢?有几种方法:改写内核,扩大系统调用表,添加新的系统调用利用内核模块,覆盖没被使用或这使用频率很低的一个系统调用的处理函数利用已有的系统调用,比如ioctl,来“实现”自定义的系统调用。第一种方法需要修改内核,适用面比较窄;第二种方法hack意味很浓,没有被使用的系统调用号有限,不同模块可能都使用这种机制,可能会产生冲突。最终我们选择了第三种方法。下面将一一道来。 阅读全文
posted @ 2013-04-23 16:01 RichardUSTC 阅读(1785) 评论(0) 推荐(1) 编辑

摘要: 类成员指针用法: 1 #include <iostream> 2 using namespace std; 3 4 class Test{ 5 public: 6 static int x; //static member 7 int y; 8 int foo(int i){ 9 return i;10 }11 int Test::* get_y_ptr(){12 return &Test::y;13 }14 };15 int Test::x... 阅读全文
posted @ 2013-04-23 12:52 RichardUSTC 阅读(208) 评论(0) 推荐(0) 编辑

摘要: 没有类型名,全局作用域的枚举,比如enum {x0, x1, x2}有类型名,全局作用域的枚举,比如enum var {y0, y1, y2}。前两种枚举中x0,x1,x2,y0,y1,y2的作用域是全局的,不能重复定义。比如第一种定义了x0,在enum var中就不能使用。有类型名的,有作用域的枚举,比如enum class color{red, blue, yellow}或enum struct color{red, blue, yellow}这中enum是C++11的特性。这里面的red、blue和yellow是限定在color内部的,必须以color::red的形式来使用。枚举值实际上 阅读全文
posted @ 2013-04-23 09:05 RichardUSTC 阅读(308) 评论(0) 推荐(0) 编辑