西安邮电实验3.5-基于内核模块的负载监控

西安邮电实验3.5-基于内核模块的负载监控

有几个问题没有答案:
1.空的load.h 的作用是什么?
2.遍历线程使用的源码:

#define do_each_thread(g, t) \
	for (g = t = &init_task ; (g = t = next_task(g)) != &init_task ; ) do

#define while_each_thread(g, t) \
	while ((t = next_thread(t)) != g)

发现:
1.静态变量可以不用初始化,编译器帮忙初始化为0
2.用到的锁rcu lock适合都多写少的情况

rcu_read_lock();
rcu_read_unlock();

源码地址,可以直接访问,放在同一个文件夹下直接make命令即可:
https://gitee.com/ljrcore/linuxmooc/tree/master/%E3%80%8ALinux%E5%86%85%E6%A0%B8%E5%88%86%E6%9E%90%E4%B8%8E%E5%BA%94%E7%94%A8%E3%80%8B%E5%8A%A8%E6%89%8B%E5%AE%9E%E8%B7%B5%E6%BA%90%E7%A0%81/3.5%E5%B7%A5%E7%A8%8B%E5%AE%9E%E8%B7%B5-%E5%9F%BA%E4%BA%8E%E5%86%85%E6%A0%B8%E6%A8%A1%E5%9D%97%E7%9A%84%E8%B4%9F%E8%BD%BD%E7%9B%91%E6%8E%A7

Makefile文件:

OS_VER := UNKNOWN
UNAME := $(shell uname -r)
ifneq ($(findstring 4.15.0-39-generic,$(UNAME)),)
		OS_VER := UBUNTU_1604
endif

ifneq ($(KERNELRELEASE),)
		obj-m += $(MODNAME).o
		$(MODNAME)-y := main.o
		ccflags-y := -I$(PWD)/
else
		export PWD=`pwd`

ifeq ($(KERNEL_BUILD_PATH),)
		KERNEL_BUILD_PATH := /lib/modules/`uname -r`/build
endif
ifeq ($(MODNAME),)
		export MODNAME=load_monitor
endif

all:
		make CFLAGS_MODULE=-D$(OS_VER) -C /lib/modules/`uname -r`/build M=`pwd`  modules
clean:
		make -C $(KERNEL_BUILD_PATH) M=$(PWD) clean
endif

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值