当前位置:  技术问答>linux和unix

读原码的时候的问题:太多的函数不懂。

    来源: 互联网  发布时间:2014-12-25

    本文导语:  我在读fork。c时,满篇的诸如 wq_write_lock_irqsave),wq_write_unlock_irqrestore()的函数,请问我在哪里,或用什么方法可以知道这些函数和变量的意思呢? 谢谢 | 希望下面的文章对你有帮助 Thread: __wake_up(): w...

我在读fork。c时,满篇的诸如 wq_write_lock_irqsave),wq_write_unlock_irqrestore()的函数,请问我在哪里,或用什么方法可以知道这些函数和变量的意思呢? 谢谢

|
希望下面的文章对你有帮助

Thread: __wake_up(): why wq_write_lock_irqsave()?
PrintMessage: 3671907 
FROM: Manfred SpraulDATE: 04/30/2000 09:10:05SUBJECT:  __wake_up(): why wq_write_lock_irqsave()? This is a multi-part message in MIME format.
--------------5D03F4EEDF45E6468A8D5BAA
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

I made a quick benchmark of the pipe code, and noticed that if I
(K6/200, kernel compiled for 586 SMP)

* enable rwlocks for wait-queues
* use wq_read_lock instead of wq_write_lock_irqsave() in wake_up

pipe read (write) operations get 21 (41) cpu ticks faster. The only
wait-queue call in pipe_read is one call to wake_up.

wake_up calls should be very common, so what about enabling that
optimization? Or is there a problem with wq_read_lock in wake_up()?
Noone should call add_wait_queu()/remove_wait_queue() from an interrupt.

This patch should also speed up UP kernels: we avoid the "cli" in
__wake_up.

--
Manfred
--------------5D03F4EEDF45E6468A8D5BAA
Content-Type: text/plain; charset=us-ascii;
 name="patch-wait"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="patch-wait"

// $Header$
// Kernel Version:
//  VERSION = 2
//  PATCHLEVEL = 3
//  SUBLEVEL = 99
//  EXTRAVERSION = -pre6
--- 2.3/kernel/sched.c Thu Apr 27 11:27:26 2000
+++ build-2.3/kernel/sched.c Sun Apr 30 17:44:51 2000
@@ -645,12 +645,11 @@
 {
  struct list_head *tmp, *head;
  struct task_struct *p;
- unsigned long flags;
 
         if (!q)
  goto out;
 
- wq_write_lock_irqsave(&q->lock, flags);
+ wq_read_lock(&q->lock);
 
 #if WAITQUEUE_DEBUG
  CHECK_MAGIC_WQHEAD(q);
@@ -682,7 +681,7 @@
  break;
  }
  }
- wq_write_unlock_irqrestore(&q->lock, flags);
+ wq_read_unlock(&q->lock);
 out:
  return;
 }
--- 2.3/include/linux/wait.h Sun Feb 27 08:57:12 2000
+++ build-2.3/include/linux/wait.h Sun Apr 30 17:49:47 2000
@@ -59,7 +59,7 @@
  * decoupled in the new architecture, lightweight `simple` spinlocks give
  * us slightly better latencies and smaller waitqueue structure size.
  */
-#define USE_RW_WAIT_QUEUE_SPINLOCK 0
+#define USE_RW_WAIT_QUEUE_SPINLOCK 1
 
 #if USE_RW_WAIT_QUEUE_SPINLOCK
 # define wq_lock_t rwlock_t


--------------5D03F4EEDF45E6468A8D5BAA--


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to 
Please read the FAQ at http://www.tux.org/lkml/

 
 


    
 
 

您可能感兴趣的文章:

  • 类的构造函数,什么时候执行,是在new 新类的时候吗?
  • 如何知道一个用有没有权限调用bind()函数(socket编程的时候)
  • linux编程时候,要查询某个系统调用的库函数,如何查?
  • readpage,writepage这两个函数什么时候调用?
  • 用ar做了个静态库,连接的时候总是说找不到函数定义,好烦啊????????????????
  • 在shell中使用mail函数的时候如何使用变量
  • 共享库如何在编译的时候确定哪些函数没有实现?
  • 请问:我要链接哪些oci库才能成功编译.我在编译的时候老是报OCI函数找不到.
  • 在创建线程的时候,函数如果有两个参数该怎么办啊
  • linux的动态链接库开发的时候,基类带有虚成员函数的话会找不到符号。
  • write函数往套接字文件描述符写入数据的时候数据存储在哪里 ?
  • 共享库如何在编译的时候确定哪些函数没有实现? iis7站长之家
  • GDB调试的时候用step想跳到其他函数里提示no such file
  • 请教:修改Linux内核时,需要调用驱动程序的函数,头文件也包含了,但是编译时候说头文件找不到!
  • 既然在定义实例变量的时候可以初始化实例变量的值,那还要构造函数干吗?谢谢!
  • 请教在linux下调用mbstowcs(...)函数转换wchar_t类型时候,遇到中文就失败是什么原因
  • 求助socket编程问题:C/S模式.客户端调用Winsock函数connect()的时候,返回错误码是10065(主机路由不可达).
  • 在linux下用C编一个要用到stdscr(),keypad()等这类函数时候遇到了一个小问题·······麻烦各位帮帮我解决一下吧······很不知所措的我····
  • gcc 写程序的时候怎么在这个文件中调用其他文件中的函数
  • 我写了一个函数,能写一条记录到数据库中,我把这段代码放到jsp中去的时候,执行没问题;但我把它封装成bean,就出错了。
  • 问个低级的问题,我编译的时候没问题,可运行时候出现如下提示:Exception in thread "main" java.lang.NoClassDefFoundError: NativeDem
  • 为什么我在安装linux9的时候,机器检测硬件的时候,出现“超频保护中”的提示,请问大家有没有碰到此类的问题
  • 我在执行javac命令的时候没有问题,但是在执行java命令的时候却报如下错误
  • 在编译内核时候出现问题,大家来帮忙看看是什么问题?怎么解决?
  • ./configure的时候出现的小问题?进来帮忙解答一下..谢谢
  • liunx升级内核的时候出现的问题
  • 编译内核时候出现的问题,求解
  • tar压缩时候的路径问题
  • 载安装redhat7.3的时候遇到奇怪问题
  • 什么时候需要考虑LITTLE/BIG ENDIAN BITFIELD 的问题????
  • javac时候的问题
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • VMware虚拟机linux系统,在启动的时候弹出eth0的时候失败了。进入系统的时候,输入ifconfig没有IP,这是什么情况???那位高手帮帮忙,不甚感激
  • 请问什么时候发出SIGKILL信号、什么时候发出SIGTERM信号?
  • 一个崩溃程序,什么时候有core,什么时候没core
  • 什么时候用EJB,什么时候用jsp,javaBean,servlet才好呀?
  • 什么时候要用“./",什么时候不用?
  • 我在安装 redhat7.2 的时候选择了 GNOME 界面,启动的时候选择了图形界面启动,请问如何更改?
  • 请问一下,安装FreeBSD的时候,我得键盘和鼠标都是USB口的,安装的时候找不到鼠标和键盘怎么办?急!
  • 我用newwin()的时候编译通过了,可是运行的时候报告Segmentation fault
  • 很奇怪,我用jb+wls已经成功的发布过entitybean,我重新做一个的时候,deploy一个jar的时候什么反映都没有??
  • 使用struts的时候,怎么才能在页面打开的时候,form里面已经填入我所需要的值?
  • kernel 什么时候可以中断 什么时候不可以中断
  • 没人知道吗?你们在搞jsp开发的时候,遇见过要在jsp页面上写方法的时候吗?告诉我你们的格式,好不好?
  • 安装gcc4.1.0的时候make时候产生的一个警告,大家帮我看看是怎么回事?
  • ubuntu 下安装libpcap 的时候make时候出错 请帮忙分析分析
  • servlet是在什么时候调用init()和destory()?
  • 救助,不知道我的时候跑哪去了
  • 安装文件的时候出错……
  • weblogic6什么时候需要重新启动2!
  • 请教:编译的时候为什么说不认识WindowAdapter?
  • Label显示视频时候闪烁怎么解决?(在线等)


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3