12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- #ifndef BLK_IOPOLL_H
- #define BLK_IOPOLL_H
- struct blk_iopoll;
- typedef int (blk_iopoll_fn)(struct blk_iopoll *, int);
- struct blk_iopoll {
- struct list_head list;
- unsigned long state;
- unsigned long data;
- int weight;
- int max;
- blk_iopoll_fn *poll;
- };
- enum {
- IOPOLL_F_SCHED = 0,
- IOPOLL_F_DISABLE = 1,
- };
- /*
- * Returns 0 if we successfully set the IOPOLL_F_SCHED bit, indicating
- * that we were the first to acquire this iop for scheduling. If this iop
- * is currently disabled, return "failure".
- */
- static inline int blk_iopoll_sched_prep(struct blk_iopoll *iop)
- {
- if (!test_bit(IOPOLL_F_DISABLE, &iop->state))
- return test_and_set_bit(IOPOLL_F_SCHED, &iop->state);
- return 1;
- }
- static inline int blk_iopoll_disable_pending(struct blk_iopoll *iop)
- {
- return test_bit(IOPOLL_F_DISABLE, &iop->state);
- }
- extern void blk_iopoll_sched(struct blk_iopoll *);
- extern void blk_iopoll_init(struct blk_iopoll *, int, blk_iopoll_fn *);
- extern void blk_iopoll_complete(struct blk_iopoll *);
- extern void __blk_iopoll_complete(struct blk_iopoll *);
- extern void blk_iopoll_enable(struct blk_iopoll *);
- extern void blk_iopoll_disable(struct blk_iopoll *);
- #endif
|