6 * how to have an empty list
8 struct kobj_list *list_init() {
9 struct kobj_list *list;
10 list = koalloc(sizeof *list);
17 /* add an object pointer to the end of the list */
18 void list_push(struct kobj_list *list, void *obj) {
22 void *list_pop(struct kobj_list *list, void *obj) {
26 void *list_shift(struct kobj_list *list, void *obj) {
30 void list_unshift(struct kobj_list *list, void *obj) {
33 void list_free(struct kobj_list *list, void *obj) {
37 for (cur = list; cur != list; cur = cur->next) {
41 void *list_elem(struct kobj_list *list, uint64_t elem) {
44 if (elem > list->elements) return 0;
46 while (elem > KOLIST_MAX_INDEX) {
48 elem -= KOLIST_MAX_INDEX+1;
50 return list->obj[elem];