/* Of course we are going to have problems once we hit * 2^16 alive types, but that can only happen by year 2K */ static u16 genl_generate_id(void) { static u16 id_gen_idx = GENL_MIN_ID; int i; for (i = 0; i <= GENL_MAX_ID - GENL_MIN_ID; i++) { if (!genl_family_find_byid(id_gen_idx)) return id_gen_idx; if (++id_gen_idx > GENL_MAX_ID) id_gen_idx = GENL_MIN_ID; } return 0; }
/* Of course we are going to have problems once we hit * 2^16 alive types, but that can only happen by year 2K */ static inline u16 genl_generate_id(void) { static u16 id_gen_idx; int overflowed = 0; do { if (id_gen_idx == 0) id_gen_idx = GENL_MIN_ID; if (++id_gen_idx > GENL_MAX_ID) { if (!overflowed) { overflowed = 1; id_gen_idx = 0; continue; } else return 0; } } while (genl_family_find_byid(id_gen_idx)); return id_gen_idx; }