#include #include #include #include #include #include #include static char devname[] = "pidevice"; static char modname[] = "pid.ko"; static dev_t mydev; static struct task_struct *mytask; static struct task_struct *parent; static void show_processes(void) { mytask = current; parent = mytask->parent; while (mytask->pid != parent->pid) { printk(KERN_ALERT "current: %s (%d) - parent: %s (%d)\n", mytask->comm, mytask->pid, parent->comm, parent->pid); mytask = mytask->parent; parent = mytask->parent; } } static int __init init(void) { int err; printk(KERN_ALERT "%s loaded by %s (%d)\n", modname, mytask->comm, mytask->pid); if ((err = alloc_chrdev_region(&mydev, 0, 1, devname))) printk(KERN_ALERT "ERROR in alloc_chrdev_region: %d\n", err); return 0; } static void __exit exit(void) { unregister_chrdev_region(mydev, 1); printk(KERN_ALERT "%s unloaded\n", modname); } module_init(init); module_exit(exit); MODULE_LICENSE("GPL");