package linux; import gov.nasa.jpf.annotation.Conditional; /** * http://vbdb.itu.dk/#bug/linux/0f8f809 * * @author Jens Meinicke */ public class Linux3 { // #ifndef CONFIG_FORCE_MAX_ZONEORDER // #define MAX_ORDER 11 // #else // #define MAX_ORDER CONFIG_FORCE_MAX_ZONEORDER // #endif @Conditional static boolean FORCE_MAX_ZONEORDER = true; @Conditional static boolean PPC_256K_PAGES = true; @Conditional static boolean PPC_64K_PAGES = false; @Conditional static boolean PPC_16K_PAGES = false; @Conditional static boolean SLAB = false; @Conditional static boolean LOCKDEP = true; @Conditional static boolean SLOB = false; static int MAX_ORDER = 11;//Verify.getInt(0, 11);//FORCE_MAX_ZONEORDER ? 11 : 5; static int PAGE_SHIFT = 0; static { if (PPC_256K_PAGES) { PAGE_SHIFT = 18; } else if (PPC_64K_PAGES) { PAGE_SHIFT = 16; } else if (PPC_16K_PAGES) { PAGE_SHIFT = 14; } else { PAGE_SHIFT = 12; } } static int KMALLOC_SHIFT_HIGH; static { if (SLAB) { KMALLOC_SHIFT_HIGH = MAX_ORDER + PAGE_SHIFT - 1 <= 25 ? MAX_ORDER + PAGE_SHIFT - 1 : 25; } else { KMALLOC_SHIFT_HIGH = PAGE_SHIFT + 1; } } // #ifndef CONFIG_SLOB // int* kmalloc_caches[KMALLOC_SHIFT_HIGH + 1]; static Object[] kmalloc_caches; static { if (!SLOB) { kmalloc_caches = new Object[KMALLOC_SHIFT_HIGH + 1]; } } // #endif // // #ifdef CONFIG_LOCKDEP static void init_node_lock_keys() { if (LOCKDEP) { for (int i = 1; i < PAGE_SHIFT + MAX_ORDER; i++) { Object cache = kmalloc_caches[i]; // (4) ERROR if (cache == null) continue; @SuppressWarnings("unused") Object n = cache; } } else { return; } } // static void init_lock_keys() { if (LOCKDEP) { init_node_lock_keys(); // (3) } } static void kmem_cache_init_late() { init_lock_keys(); // (2) } // public static void main(String... args) { System.out.println(MAX_ORDER); if (!SLOB) { try { kmem_cache_init_late(); // (1) } catch (Exception e) { e.printStackTrace(); System.out.println("Error"); return; } System.out.println("No error"); } } }