Lines Matching defs:list

38 list_alloc(list_t *list, int size)
40 list->l_size = size;
42 list->l_ptrs = Zalloc(sizeof (void *) * (size + 1));
44 list->l_ptrs = NULL;
48 list_free(list_t *list)
50 if (list && list->l_ptrs) {
51 free(list->l_ptrs);
52 list->l_ptrs = NULL;
108 list_setkeyfunc(char *arg, optdesc_t *opt, list_t *list, int type)
110 if (list == NULL)
113 list->l_sortorder = opt->o_sortorder;
114 list->l_type = type;
116 list->l_func = get_idkey;
121 list->l_func = get_cpu_from_usage;
123 list->l_func = get_cpu_from_psinfo;
127 list->l_func = get_time;
131 list->l_func = get_size;
135 list->l_func = get_rssize;
139 list->l_func = get_pri;
146 list_getkeyval(list_t *list, void *ptr)
148 return (list->l_func(ptr));
152 compare_keys(list_t *list, ulong_t key1, ulong_t key2)
157 return (1 * list->l_sortorder);
159 return (-1 * list->l_sortorder);
163 list_insert(list_t *list, void *ptr)
168 for (i = 0; i < list->l_used; i++) { /* insert in the middle */
169 k1 = list_getkeyval(list, ptr);
170 k2 = list_getkeyval(list, list->l_ptrs[i]);
171 if (compare_keys(list, k1, k2) >= 0) {
172 for (j = list->l_used - 1; j >= i; j--)
173 list->l_ptrs[j+1] = list->l_ptrs[j];
174 list->l_ptrs[i] = ptr;
175 if (list->l_used < list->l_size)
176 list->l_used++;
180 if (i + 1 <= list->l_size) { /* insert at the tail */
181 list->l_ptrs[list->l_used] = ptr;
183 list->l_used++;
188 list_preinsert(list_t *list, void *ptr)
192 if (list->l_used < list->l_size) { /* just add */
193 list_insert(list, ptr);
196 k1 = list_getkeyval(list, list->l_ptrs[list->l_used - 1]);
197 k2 = list_getkeyval(list, ptr);
198 if (compare_keys(list, k1, k2) >= 0) /* skip insertion */
200 k1 = list_getkeyval(list, list->l_ptrs[0]);
201 if (compare_keys(list, k2, k1) >= 0) { /* add at the head */
202 list_insert(list, ptr);
205 list_insert(list, ptr);
209 list_sort(list_t *list)
211 list->l_used = 0;
212 if (list->l_size == 0)
215 (void) memset(list->l_ptrs, 0, sizeof (void *) * list->l_size);
217 if (list->l_type == LT_LWPS) {
218 lwp_info_t *lwp = list->l_head;
221 list_preinsert(list, (void *)lwp);
225 id_info_t *id = list->l_head;
228 list_preinsert(list, (void *)id);