.. | .. |
---|
74 | 74 | WORK_OFFQ_FLAG_BASE = WORK_STRUCT_COLOR_SHIFT, |
---|
75 | 75 | |
---|
76 | 76 | __WORK_OFFQ_CANCELING = WORK_OFFQ_FLAG_BASE, |
---|
77 | | - WORK_OFFQ_CANCELING = (1 << __WORK_OFFQ_CANCELING), |
---|
78 | 77 | |
---|
79 | 78 | /* |
---|
80 | 79 | * When a work item is off queue, its high bits point to the last |
---|
.. | .. |
---|
85 | 84 | WORK_OFFQ_POOL_SHIFT = WORK_OFFQ_FLAG_BASE + WORK_OFFQ_FLAG_BITS, |
---|
86 | 85 | WORK_OFFQ_LEFT = BITS_PER_LONG - WORK_OFFQ_POOL_SHIFT, |
---|
87 | 86 | WORK_OFFQ_POOL_BITS = WORK_OFFQ_LEFT <= 31 ? WORK_OFFQ_LEFT : 31, |
---|
88 | | - WORK_OFFQ_POOL_NONE = (1LU << WORK_OFFQ_POOL_BITS) - 1, |
---|
89 | | - |
---|
90 | | - /* convenience constants */ |
---|
91 | | - WORK_STRUCT_FLAG_MASK = (1UL << WORK_STRUCT_FLAG_BITS) - 1, |
---|
92 | | - WORK_STRUCT_WQ_DATA_MASK = ~WORK_STRUCT_FLAG_MASK, |
---|
93 | | - WORK_STRUCT_NO_POOL = (unsigned long)WORK_OFFQ_POOL_NONE << WORK_OFFQ_POOL_SHIFT, |
---|
94 | 87 | |
---|
95 | 88 | /* bit mask for work_busy() return values */ |
---|
96 | 89 | WORK_BUSY_PENDING = 1 << 0, |
---|
.. | .. |
---|
100 | 93 | WORKER_DESC_LEN = 24, |
---|
101 | 94 | }; |
---|
102 | 95 | |
---|
| 96 | +/* Convenience constants - of type 'unsigned long', not 'enum'! */ |
---|
| 97 | +#define WORK_OFFQ_CANCELING (1ul << __WORK_OFFQ_CANCELING) |
---|
| 98 | +#define WORK_OFFQ_POOL_NONE ((1ul << WORK_OFFQ_POOL_BITS) - 1) |
---|
| 99 | +#define WORK_STRUCT_NO_POOL (WORK_OFFQ_POOL_NONE << WORK_OFFQ_POOL_SHIFT) |
---|
| 100 | + |
---|
| 101 | +#define WORK_STRUCT_FLAG_MASK ((1ul << WORK_STRUCT_FLAG_BITS) - 1) |
---|
| 102 | +#define WORK_STRUCT_WQ_DATA_MASK (~WORK_STRUCT_FLAG_MASK) |
---|
| 103 | + |
---|
103 | 104 | struct work_struct { |
---|
104 | 105 | atomic_long_t data; |
---|
105 | 106 | struct list_head entry; |
---|