#include <linux/module.h>
#include <linux/fs.h>
#include <linux/cpu.h>

static int __cpuinit my_cpu_callback(struct notifier_block *nfb,
   unsigned long action, void *hcpu)
{
   unsigned int cpu = (unsigned long)hcpu;

   switch (action) {
   case CPU_ONLINE:
   case CPU_ONLINE_FROZEN:
       printk("cpu 0x%x aktiviert\n", cpu);
       break;
   case CPU_DEAD:
   case CPU_DEAD_FROZEN:
       printk("cpu 0x%x deaktiviert\n", cpu);
       break;
   }
   return NOTIFY_OK;
}

static struct notifier_block my_cpu_notifier = {
   .notifier_call = my_cpu_callback;
};

static int __init mod_initialize(void)
{
   register_hotcpu_notifier(&my_cpu_notifier);
   printk("cpu_notifier angemeldet\n");
   return 0;
}

static void __exit mod_release(void)
{
   unregister_hotcpu_notifier(&my_cpu_notifier);
   printk("cpu_notifier abgemeldet\n");
}

module_init( mod_initialize );
module_exit( mod_release );
MODULE_LICENSE("GPL");