| .. | .. |
|---|
| 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; |
|---|