Listing 2. Algorithm of Entering Watermark States 1 static void enter_watermark_state(int new_state) 2 { 3 int changed = 0, r; 4 5 spin_lock(&lowmem_lock); 6 if (lowmem_watermark_reached != new_state) { 7 lowmem_watermark_reached = new_state; 8 changed = 1; 9 } 10 spin_unlock(&lowmem_lock); 11 if (changed) { 12 printk(KERN_DEBUG MY_NAME ": changed to %d\n", 13 new_state); 14 r = kobject_uevent(&kernel_subsys.kset.kobj, 15 KOBJ_CHANGE, 16 &low_watermark_attr.attr); 17 if (r < 0) 18 printk(KERN_ERR MY_NAME 19 ": kobject_uevent failed: %d\n", r); 19 } 20 }