본문 바로가기

커널13

커널에서 Blocking I/O [블로그 통합으로 이전해 온 자료] - 1. "원자 문맥에서 수행 중(spinlock, seqlock RUC lock 등..)일 때에는 절대로 잠들어서는 안된다." 2. 인터럽트를 비 활성화 시켰을 때에도 잠들 수 없다. 3. semaphore를 보유한 동안 잠드는것은 이 semaphore를 기다리는 다른 프로세스도 잠들게 한다. (주의!!) 3. 잠들기 전에 기다리던 조건을 정말로 충족하는지 확인해야 한다. 4. 누군가 깨울것이라는 확인 없이 잠들어서는 안된다. 대기 큐 wait_queue_t DECLARE_WAIT_QUEUE_HEAD( wq ); wait_queue_head_t wq; init_waitqueue_head( &wq ); condition 조건이 참 일때까지 잠든다는데.. 그러면 깨운다는.. 2021. 2. 8.
Kernel Module 컴파일을 위한 Makefile 만들기 [블로그 통합으로 이전해 온 자료] - 2008. 4. 24. 01:41 ifneq ($(KERNELRELEASE),) xxx-objs := main.o utils.o proc.o obj-m := xxx.o else KERNELDIR ?= /lib/modules/$(shell uname -r)/build PWD := $(shell pwd) defualt: $(MAKE) -C $(KERNELDIR) M=$(PWD) modules endif clean: rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions Module.symvers - 단일 파일로 module을 만들 때는 xxx-objs 없이 obj-m 하나만 존재하면 된다. - 여러개의 파일로 mod.. 2021. 2. 8.
Kernel Module - template [블로그 통합으로 이전해 온 자료] - 2008. 4. 24. 02:24 %% LDD 3판에서 따옴 loaddev - 드라이버를 로드하고 nod 파일을 만든다. #!/bin/sh MODULE="template" DEVICE="template" MODE="664" if grep -q '^staff:' /etc/group; then GROUP="staff" else GROUP="wheel" fi /sbin/insmod $MODULE.ko $* || exit 1 MAJOR=$(awk "\$2==\"$MODULE\" " /proc/devices) rm -rf /dev/$[0-3] mknod /dev/$0 c $MAJOR 0 mknod /dev/$1 c $MAJOR 0 mknod /dev/$2 c $MAJOR 0.. 2021. 2. 8.
2020년 3월 7일 - 커널 설정 * pluto Ethernet controller: Broadcom Inc. and subsidiaries NetXtreme BCM5720 2-port Gigabit Ethernet PCIe Network controller: Broadcom Inc. and subsidiaries BCM4360 802.11ac Wireless Network Adapter (rev 03) SATA controller: Marvell Technology Group Ltd. 88SE9230 PCIe SATA 6Gb/s Controller (rev 1 * lenovo m93p tiny ethernet : I217-LM --> e1000 wifi : Intel Corporation Wireless 7260 --> iwlwifi .. 2020. 2. 27.