1 #ifndef ASM_SCHID_H
2 #define ASM_SCHID_H
3 
4 #include <linux/types.h>
5 
6 struct subchannel_id {
7 	__u32 cssid : 8;
8 	__u32 : 4;
9 	__u32 m : 1;
10 	__u32 ssid : 2;
11 	__u32 one : 1;
12 	__u32 sch_no : 16;
13 } __attribute__ ((packed, aligned(4)));
14 
15 #ifdef __KERNEL__
16 #include <linux/string.h>
17 
18 /* Helper function for sane state of pre-allocated subchannel_id. */
19 static inline void
init_subchannel_id(struct subchannel_id * schid)20 init_subchannel_id(struct subchannel_id *schid)
21 {
22 	memset(schid, 0, sizeof(struct subchannel_id));
23 	schid->one = 1;
24 }
25 
26 static inline int
schid_equal(struct subchannel_id * schid1,struct subchannel_id * schid2)27 schid_equal(struct subchannel_id *schid1, struct subchannel_id *schid2)
28 {
29 	return !memcmp(schid1, schid2, sizeof(struct subchannel_id));
30 }
31 
32 #endif /* __KERNEL__ */
33 
34 #endif /* ASM_SCHID_H */
35