Board logo

标题: 不知道什么时候6003能用2.6.25.9的内核? [打印本页]

作者: huowz_heb    时间: 2008-7-21 20:44     标题: 不知道什么时候6003能用2.6.25.9的内核?

会有性能提升的吧?
作者: 刘世伟    时间: 2008-7-21 21:07

还要等, 龙梦在整理, 性能会有提升。
作者: 秦武扬    时间: 2008-7-21 21:30

我靠,到现在龙芯2F还不可以用2.6.25内核!这是怎么回事!

难怪你们一个劲的讨论2。6。18内核呢,我还以为你们在考古呢!
作者: gxcooo    时间: 2008-7-22 13:20

原帖由 秦武扬 于 2008-7-21 21:30 发表
我靠,到现在龙芯2F还不可以用2.6.25内核!这是怎么回事!

难怪你们一个劲的讨论2。6。18内核呢,我还以为你们在考古呢!


花脸啥时候也变得这么幽默了
作者: zhllg    时间: 2008-7-22 15:49

丑媳妇早晚要见公婆
rays系统里不提供内核源代码,这实际已经是违法行为了
想不通,既然都能用了,说明还是可以的嘛,为什么这么不自信呢?

[ 本帖最后由 zhllg 于 2008-7-22 15:51 编辑 ]
作者: zyj001et    时间: 2008-7-22 17:37

原帖由 zhllg 于 2008-7-22 15:49 发表
丑媳妇早晚要见公婆
rays系统里不提供内核源代码,这实际已经是违法行为了
想不通,既然都能用了,说明还是可以的嘛,为什么这么不自信呢?


在ray的论坛里面看到说是 他们也没有源代码。 是lemote直接给它们内核。
作者: babydragon    时间: 2008-7-22 18:05

原帖由 zhllg 于 2008-7-22 15:49 发表
丑媳妇早晚要见公婆
rays系统里不提供内核源代码,这实际已经是违法行为了
想不通,既然都能用了,说明还是可以的嘛,为什么这么不自信呢?

是啊,这样是违反GPL的,小心GNU了哦。
作者: 秦武扬    时间: 2008-7-22 19:32

龙梦3D显卡都可以忽略,还有什么事是不敢干的!没什么大惊小怪的!
作者: strongchina    时间: 2008-7-22 20:18

喜怒,喜怒。化悲愤为力量,化怒火为热情。
                   --龙芯盒子FLF1CCA27000294持有者。

[ 本帖最后由 strongchina 于 2008-7-22 20:20 编辑 ]
作者: zyj001et    时间: 2008-7-23 09:55

没那么严重

在loongson.cn/support  中可以下载到 2.6.18 的patch
作者: 庖丁    时间: 2008-7-23 16:15

内核源码URL:http://www.lemote.com/upfiles/linux-2.6.18-2f_20080717.tar.gz
编译内核的工具链URL:http://www.lemote.com/upfiles/gcc-3.4.6-newbin.tar.gz

有的
作者: seaway    时间: 2008-7-23 23:49

2.6.18就是考古?算了吧你,你对25到18内核之间的差别有多少了解,你又用到多少内核新特性?WINDOWS XP内核8年了都
作者: 刘世伟    时间: 2008-7-24 07:59

2.6.23以上性能有明显改善。

最近2年(2.6.18 到 2.6.26) 内核的发展很快, 每天2000行。据说达到了软件工程的极限,
大家都很担心它的变化速度
作者: 秦武扬    时间: 2008-7-24 11:40

原帖由 seaway 于 2008-7-23 23:49 发表
2.6.18就是考古?算了吧你,你对25到18内核之间的差别有多少了解,你又用到多少内核新特性?WINDOWS XP内核8年了都

windows的内核8年没更新了!到底是放屁,还是微软得神经病了!

linux有很多内核吗,linux不就一个内核不断更新吗!到是windows的内核不止一种!

你估计是喝高了,真不知道你应用window的那个例子要说明什么!!!!
作者: zhllg    时间: 2008-7-24 15:11

原帖由 seaway 于 2008-7-23 23:49 发表
2.6.18就是考古?算了吧你,你对25到18内核之间的差别有多少了解,你又用到多少内核新特性?WINDOWS XP内核8年了都


不是考古也差不多

linux device driver是针对2.6.11写的
到了2.6.16的时候,很多书的代码已经编译都编译不了了
而且要修改也不是一行两行的问题

linux内核开发有个传统,stable internal api nonsense
内部函数可以随意变化,只要比原来的实现好
谁改动,谁负责修改内核树里所有对此函数的调用
作者: hcsy    时间: 2008-7-25 00:03

原帖由 zhllg 于 2008-7-24 15:11 发表


不是考古也差不多

linux device driver是针对2.6.11写的
到了2.6.16的时候,很多书的代码已经编译都编译不了了
而且要修改也不是一行两行的问题

linux内核开发有个传统,stable internal api nonse ...

我的天呀……这么恐怖。函数名的事很需要技巧吗?

[ 本帖最后由 hcsy 于 2008-7-25 00:05 编辑 ]
作者: zhllg    时间: 2008-7-25 01:07

这是我改写的一个ldd3里的模块

diff --git a/misc-modules/jiq.c b/misc-modules/jiq.c
index 0577923..d3ea8ed 100755
--- a/misc-modules/jiq.c
+++ b/misc-modules/jiq.c
@@ -53,9 +53,15 @@ module_param(delay, long, 0);
static DECLARE_WAIT_QUEUE_HEAD (jiq_wait);


-static struct work_struct jiq_work;
-
+static struct work_data {
+       struct work_struct jiq_work;
+       struct clientdata *data;
+} wd;

+static struct delayed_work_data {
+       struct delayed_work jiq_delayed_work;
+       struct clientdata *data;
+} dwd;

/*
  * Keep track of info we need between task queue runs.
@@ -111,20 +117,28 @@ static int jiq_print(void *ptr)
/*
  * Call jiq_print from a work queue
  */
-static void jiq_print_wq(void *ptr)
+static void jiq_print_wq(struct work_struct *work)
{
-       struct clientdata *data = (struct clientdata *) ptr;
+       struct work_data *wd = container_of(work, struct work_data, jiq_work);
+       struct clientdata *data = wd->data;
     
-       if (! jiq_print (ptr))
+       if (! jiq_print (data))
                return;
diff --git a/misc-modules/jiq.c b/misc-modules/jiq.c
index 0577923..d3ea8ed 100755
--- a/misc-modules/jiq.c
+++ b/misc-modules/jiq.c
@@ -53,9 +53,15 @@ module_param(delay, long, 0);
static DECLARE_WAIT_QUEUE_HEAD (jiq_wait);


-static struct work_struct jiq_work;
-
+static struct work_data {
+       struct work_struct jiq_work;
+       struct clientdata *data;
+} wd;

+static struct delayed_work_data {
+       struct delayed_work jiq_delayed_work;
+       struct clientdata *data;
+} dwd;

/*
  * Keep track of info we need between task queue runs.
@@ -111,20 +117,28 @@ static int jiq_print(void *ptr)
/*
  * Call jiq_print from a work queue
  */
-static void jiq_print_wq(void *ptr)
+static void jiq_print_wq(struct work_struct *work)
{
-       struct clientdata *data = (struct clientdata *) ptr;
+       struct work_data *wd = container_of(work, struct work_data, jiq_work);
+       struct clientdata *data = wd->data;

-       if (! jiq_print (ptr))
+       if (! jiq_print (data))
                return;

-       if (data->delay)
-               schedule_delayed_work(&jiq_work, data->delay);
-       else
-               schedule_work(&jiq_work);
+       schedule_work(work);
}


+static void jiq_print_wq_delayed(struct work_struct *work)
+{
+       struct delayed_work_data *dwd = container_of(work, struct delayed_work_data, jiq_delayed_work.work);
+       struct clientdata *data = dwd->data;
+   
+       if (! jiq_print (data))
+               return;
+   
+       schedule_delayed_work(&dwd->jiq_delayed_work, data->delay);
+}

static int jiq_read_wq(char *buf, char **start, off_t offset,
                    int len, int *eof, void *data)
@@ -137,7 +151,7 @@ static int jiq_read_wq(char *buf, char **start, off_t offset,
        jiq_data.delay = 0;

        prepare_to_wait(&jiq_wait, &wait, TASK_INTERRUPTIBLE);
-       schedule_work(&jiq_work);
+       schedule_work(&wd.jiq_work);
        schedule();
        finish_wait(&jiq_wait, &wait);

@@ -157,7 +171,7 @@ static int jiq_read_wq_delayed(char *buf, char **start, off_t offset,
        jiq_data.delay = delay;

        prepare_to_wait(&jiq_wait, &wait, TASK_INTERRUPTIBLE);
-       schedule_delayed_work(&jiq_work, delay);
+       schedule_delayed_work(&dwd.jiq_delayed_work, delay);
        schedule();
        finish_wait(&jiq_wait, &wait);

@@ -241,7 +255,10 @@ static int jiq_init(void)
{

        /* this line is in jiq_init() */
-       INIT_WORK(&jiq_work, jiq_print_wq, &jiq_data);
+       INIT_WORK(&wd.jiq_work, jiq_print_wq);
+       wd.data=&jiq_data;
+       INIT_DELAYED_WORK(&dwd.jiq_delayed_work, jiq_print_wq_delayed);
+       dwd.data=&jiq_data;

        create_proc_read_entry("jiqwq", 0, NULL, jiq_read_wq, NULL);
        create_proc_read_entry("jiqwqdelay", 0, NULL, jiq_read_wq_delayed, NULL);
作者: zhllg    时间: 2008-7-25 01:10

刚刚测试了一下,在2.6.24上还可以运行
作者: hcsy    时间: 2008-7-25 08:26

其实不是所有函数名需要改所有的调用.
作者: zhllg    时间: 2008-7-25 14:34

关键是internal api的变化并不只局限于函数名的变化
否则内核开发者也太无聊了,整天把函数名改来改去

有的改动牵扯到一些很基础的机制,比如semaphore -> mutex
http://www.mjmwired.net/kernel/Documentation/mutex-design.txt

binary semaphore其实就是mutex,专门弄一套mutex的api,可以对这种情况进行专门优化
内核里很多时候使用semaphore,都只是把它当mutex来用
所以这个改动影响是很大的
作者: sigsegv11    时间: 2008-7-25 17:39

自2.6.18开始每个新的内核改变都很大啊

2.6.26还是没有2f支持,比较郁闷
作者: zhllg    时间: 2008-7-26 02:51

差点忘了这个
自己看吧
http://lwn.net/Articles/2.6-kernel-api/




欢迎光临 龙芯论坛(loongson forum) (http://www.lemote.com/bbs/) Powered by Discuz! 7.2