Blame view

kernel/linux-rt-4.4.41/arch/s390/include/asm/chpid.h 935 Bytes
5113f6f70   김현기   kernel add
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
  /*
   *    Copyright IBM Corp. 2007, 2012
   *    Author(s): Peter Oberparleiter <peter.oberparleiter@de.ibm.com>
   */
  #ifndef _ASM_S390_CHPID_H
  #define _ASM_S390_CHPID_H
  
  #include <uapi/asm/chpid.h>
  #include <asm/cio.h>
  
  struct channel_path_desc {
  	u8 flags;
  	u8 lsn;
  	u8 desc;
  	u8 chpid;
  	u8 swla;
  	u8 zeroes;
  	u8 chla;
  	u8 chpp;
  } __packed;
  
  static inline void chp_id_init(struct chp_id *chpid)
  {
  	memset(chpid, 0, sizeof(struct chp_id));
  }
  
  static inline int chp_id_is_equal(struct chp_id *a, struct chp_id *b)
  {
  	return (a->id == b->id) && (a->cssid == b->cssid);
  }
  
  static inline void chp_id_next(struct chp_id *chpid)
  {
  	if (chpid->id < __MAX_CHPID)
  		chpid->id++;
  	else {
  		chpid->id = 0;
  		chpid->cssid++;
  	}
  }
  
  static inline int chp_id_is_valid(struct chp_id *chpid)
  {
  	return (chpid->cssid <= __MAX_CSSID);
  }
  
  
  #define chp_id_for_each(c) \
  	for (chp_id_init(c); chp_id_is_valid(c); chp_id_next(c))
  #endif /* _ASM_S390_CHPID_H */