Есть текст програмки, в предыдущем посте. При insmod test.c ps axuf ничего не выдаёт (то есть я не вижу такого [test]). НО... load average с этим модулем сразу даёт еденицу, по top (в нём нажмём клвишу i) он показывется как работающий процес... Вот мне интересно это что глючит, ядро, статичтика или ещё что??? Или всё таки этот процесс постоянно в очереди в планировщике. Что я сделал дальше. Вот как исправил программу:
#define __KERNEL__
#define MODULE
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/sched.h>
#include <linux/interrupt.h>
int init_module(void)
{
daemonize ();
reparent_to_init ();
strcpy (current->comm, "testd");
current->state = TASK_UNINTERRUPTIBLE;
schedule_timeout(10 * HZ);
return -EIO;
}
И вот я получил, то что мне требовалось, процесс в состоянии DW. Почему, что такое, что за глюк???? При ps axuf этот процес мы видим.
Вот Makefile чтоб скомпилировалось:
all: test.o
test.o: test.c
gcc -c test.c -I/lib/modules/`uname -r`/build/include
Понятно что перед строчкой gcc -с ... должна быть табуляция.
З.Ы. Сам я не хрена языка не знаю... Просто пытаюсь разобраться с одним сложным модулем, хочу понять что с ним происходит, из-за него LA всегда больше еденицы и он всегда считается работающим. Сорри за сумбурность..
Форум —
Development