File: dlink.h

package info (click to toggle)
mdadm 3.3.2-5
  • links: PTS, VCS
  • area: main
  • in suites: jessie-kfreebsd
  • size: 3,360 kB
  • sloc: ansic: 41,102; sh: 1,818; makefile: 300
file content (25 lines) | stat: -rw-r--r-- 689 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

/* doubley linked lists */
/* This is free software. No strings attached. No copyright claimed */

struct __dl_head
{
    void * dh_prev;
    void * dh_next;
};

#define	dl_alloc(size)	((void*)(((char*)xcalloc(1,(size)+sizeof(struct __dl_head)))+sizeof(struct __dl_head)))
#define	dl_new(t)	((t*)dl_alloc(sizeof(t)))
#define	dl_newv(t,n)	((t*)dl_alloc(sizeof(t)*n))

#define dl_next(p) *(&(((struct __dl_head*)(p))[-1].dh_next))
#define dl_prev(p) *(&(((struct __dl_head*)(p))[-1].dh_prev))

void *dl_head(void);
char *dl_strdup(char *);
char *dl_strndup(char *, int);
void dl_insert(void*, void*);
void dl_add(void*, void*);
void dl_del(void*);
void dl_free(void*);
void dl_init(void*);