4 * @author Sebastian Hack
6 * Firm's own offset_of and container_of
8 * Copyright (C) 2005 Universitaet Karlsruhe
9 * Released under the GPL
16 * Get the offset of a member of a struct.
17 * @param type The type of the struct member is in.
18 * @param member The name of the member.
19 * @return The offset of member in type in bytes.
21 #define firm_offset_of(type, member) ((char *) &((type *) 0)->member - (char *) 0)
24 * Make pointer to the struct from a pointer to a member of that struct.
25 * @param ptr The pointer to the member.
26 * @param type The type of the struct.
27 * @param member The name of the member.
28 * @return A pointer to the struct member is in.
30 #define firm_container_of(ptr, type, member) ((type *) ((char *) (ptr) - firm_offset_of(type, member)))
32 #endif /* _OFFSET_H */