LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1065|回复: 11

如何直接调用内核函数如list相关的、。。。。

[复制链接]
发表于 2006-3-22 09:42:43 | 显示全部楼层 |阅读模式
typedef struct nodelist {
        struct list_head list;
        int len;
        int priority;
        int counter;
        spinlock_t lock;
} nodelist_type;有这样一个结构。。。如何在应用程序中调用内核操作struct list_head list;struct list_head list;的函数。。。。。要加什么头文件。。。。这两个头文件分别在
/usr/src/linux-2.4/include/linux/list.h
/usr/src/linux-2.4/include/linux/spinlock.h
发表于 2006-3-22 10:01:40 | 显示全部楼层
把list.h直接include进来就行了,或者copy到当前目录,这又不涉及什么内核态的操作。
spinlock应该是不能直接用的,不是有其他的解决方法么,干吗一定要用内核里的东西。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-22 10:38:26 | 显示全部楼层
你说的是
#include </usr/src/linux-2.4/include/linux/list.h>
#include <usr/src/linux-2.4/include/linux/spinlock.h>

spinlock有别的方法么。。。。
郁闷。。。2楼的哥哥,麻烦讲详细点谢谢。。。
回复 支持 反对

使用道具 举报

发表于 2006-3-22 10:44:48 | 显示全部楼层
list 在 c 库里面就有 /usr/include/linux/list.h

在应用程序里面需要用 spinlock 吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-22 11:01:29 | 显示全部楼层
/usr/include/linux/list.h其实指向/usr/src/linux-2.4/include/linux/list.h
对了
一般所说的c库或c++库
比如#include <stdio.h>
      #include <time.h>是在那个目录下寻找呀????

关于spinlock是这样的。。
设计一个网络服务程序。。接受不同网络工作站的请求。。。并插入对应的list,。。。从每个list中取最前边的。。。。进行处理,然后发送给各个工作站。。。。  如此不停的循环。。
为了保证在插入list的时候。。。别的处理如:处理程序,,或发送程序。。不对此list干扰。。。需要锁定此list。。。。。。改怎么办。如果不用spinlock。。。。
回复 支持 反对

使用道具 举报

发表于 2006-3-22 11:09:32 | 显示全部楼层
Post by macping
/usr/include/linux/list.h其实指向/usr/src/linux-2.4/include/linux/list.h

?? 我的机子上不是这样的。

一般所说的c库或c++库
比如#include <stdio.h>
      #include <time.h>是在那个目录下寻找呀????

/usr/include/

关于spinlock是这样的。。
设计一个网络服务程序。。接受不同网络工作站的请求。。。并插入对应的list,。。。从每个list中取最前边的。。。。进行处理,然后发送给各个工作站。。。。  如此不停的循环。。
为了保证在插入list的时候。。。别的处理如:处理程序,,或发送程序。。不对此list干扰。。。需要锁定此list。。。。。。改怎么办。如果不用spinlock。。。。

应用层有自己的同步机制(semaphore,mutex 等),不需要也不能使用内核里面的同步机制
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-22 11:25:08 | 显示全部楼层
semaphore,mutex 等????怎么用亚。。。。如果用这种同步。。。。能够处理我上边说的程序需求么。。。。
谢谢。。。斑竹

/usr/include/linux/list.h其实指向/usr/src/linux-2.4/include/linux/list.h斑竹正确。。
但是两个地方的好像一样不过不是连接。。
回复 支持 反对

使用道具 举报

发表于 2006-3-22 12:15:15 | 显示全部楼层
Post by macping
semaphore,mutex 等????怎么用亚。。。。如果用这种同步。。。。能够处理我上边说的程序需求么。。。。

http://yolinux.com/TUTORIALS/Lin ... tml#SYNCHRONIZATION
回复 支持 反对

使用道具 举报

发表于 2006-3-22 12:24:59 | 显示全部楼层
Post by macping
/usr/include/linux/list.h其实指向/usr/src/linux-2.4/include/linux/list.h斑竹正确。。
但是两个地方的好像一样不过不是连接。。

应该不一样吧? 至少内核里面的hash链表在c库里面是没有的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-22 15:45:12 | 显示全部楼层
http://yolinux.com/TUTORIALS/LinuxTu...YNCHRONIZATION
经典。。。。。
我喜欢。。。正在研究。。。。^_^
“应该不一样吧? 至少内核里面的hash链表在c库里面是没有的”
        spin_lock_bh(&node_queue[id-1].lock);
        list_add(&nm->list, &&node_queue[id-1].list);
          node_queue[id-1].len++;
          spin_unlock_bh(&node_queue[id-1].lock);

是不是这样???node_queue是nodelist_type类型。。(如上)
回复 支持 反对

使用道具 举报

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

本版积分规则

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