Linux内核中的P,V操作之V

V操作:也在文件:kernel/semaphore.c中。

void up(struct semaphore *sem)
{
unsigned long flags;

spin_lock_irqsave(&sem->lock, flags);
if (likely(list_empty(&sem->wait_list))) //在这里用list_empty判断sem的等待队列是否为空。
sem->count++; //如果为空则只是信号量的计数加1
else
__up(sem); //否则在这里去唤醒信号量的等待队列上的进程。
spin_unlock_irqrestore(&sem->lock, flags);
}
[……]

Read more

源代码中的中断分析(一)

(代码版本2.6.26)

中断描述符数组:irq_desc[]。include/linux/irq.h
extern struct irq_desc irq_desc[NR_IRQS];
由结构体struct irq_desc来构成中断描述符数组。
NR_IRQS:
#define NR_VECTORS 256
#define NR_IRQS (NR_VECTORS + (32 * NR_CPUS))
NR_CPUS:cpu数量。这个值是在编译内核时指定的。
[……]

Read more

Linux下UML工具和截图工具的使用

花了大半天的时间终于把HttpServer的需求文档写完了,其中还用到了UML工具和截图工具,作为一般使用这两个工具我个人认为还是很优秀的。现在就介绍一下。
UML工具:在百度摆了一下,出现了一个小工具gaphor。可是我安装了后发现,这家伙还的确有点不太好用,我问了小组的同学他们告诉我说可以使用[……]

Read more

使用drivel来写blog了

昨天看了王聪的blog才知道,原来blog也可以这样写阿--使用客户端软件来写。
这是我用一个客户端软件写的第一篇文章了,以后也就不用登录网站再写blog了,我们现在的网站是用wordpress搭建起来的,是用xmrpc.php这个文件来和客户端联系的。
不过也发现了这个客户端并不是很好,因为我的文章是使用了more标签的,
[……]

Read more