modelinde bir prototip değildir. Linux için çekirdek modülleri başlangıç olarak yazmayı öğreniyorum. Yapmaya çalıştığım şey, DFS algoritmasını kullanarak her görevi ve alt işlemini çekirdek günlüğüne yazmaktır. Ben Makefile
kullanarak kodu derlemek Fakat, yukarıdaki hata gösterir:İşlev bildirimi, C
function declaration isn’t a prototype [-Werror=strict-prototypes]
struct task_struct *current;
Bu işlevi DFS de task_struct
anahtar kelimeyi işaret ediyor. İşte benim kod:
# include <linux/init.h>
# include <linux/kernel.h>
# include <linux/module.h>
# include <linux/sched.h>
# include <linux/list.h>
void DFS (struct task_struct *task)
{
struct task_struct *current;
struct list_head *list;
list_for_each (list, &task->children)
{
current = list_entry(list, struct task_struct, sibling);
printk(KERN_INFO "%d\t%d\t%s \n", (int)current->state, current->pid, current->comm);
if (current != NULL)
{
DFS(current);
}
}
}
int DFS_init(void)
{
printk(KERN_INFO "Loading the Second Module...\n");
printk(KERN_INFO "State\tPID\tName\n");
DFS(&init_task);
return 0;
}
void DFS_exit(void)
{
printk(KERN_INFO "Removing the Second Module...\n");
}
Herkes bunu düzeltmek nasıl bilir ??
Neden _votedown_ ?? Açıklayabilir misin ?? –
C, "akımı" izin vermez. Belki de dahil ettiğiniz başlıklarda bir şey var mı? –
Çekirdekte, "current" geçerli işlem tablosu girişine işaret eden global olarak görülebilir bir değişken (işaretçi). – wildplasser