Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v2.6.27-rc9 107 lines 1.7 kB view raw
1/* 2 * Copyright (C) 2004 Red Hat UK Ltd. 3 * 4 * This file is released under the GPL. 5 */ 6 7#ifndef DM_BIO_LIST_H 8#define DM_BIO_LIST_H 9 10#include <linux/bio.h> 11 12#ifdef CONFIG_BLOCK 13 14struct bio_list { 15 struct bio *head; 16 struct bio *tail; 17}; 18 19static inline int bio_list_empty(const struct bio_list *bl) 20{ 21 return bl->head == NULL; 22} 23 24static inline void bio_list_init(struct bio_list *bl) 25{ 26 bl->head = bl->tail = NULL; 27} 28 29#define bio_list_for_each(bio, bl) \ 30 for (bio = (bl)->head; bio; bio = bio->bi_next) 31 32static inline unsigned bio_list_size(const struct bio_list *bl) 33{ 34 unsigned sz = 0; 35 struct bio *bio; 36 37 bio_list_for_each(bio, bl) 38 sz++; 39 40 return sz; 41} 42 43static inline void bio_list_add(struct bio_list *bl, struct bio *bio) 44{ 45 bio->bi_next = NULL; 46 47 if (bl->tail) 48 bl->tail->bi_next = bio; 49 else 50 bl->head = bio; 51 52 bl->tail = bio; 53} 54 55static inline void bio_list_merge(struct bio_list *bl, struct bio_list *bl2) 56{ 57 if (!bl2->head) 58 return; 59 60 if (bl->tail) 61 bl->tail->bi_next = bl2->head; 62 else 63 bl->head = bl2->head; 64 65 bl->tail = bl2->tail; 66} 67 68static inline void bio_list_merge_head(struct bio_list *bl, 69 struct bio_list *bl2) 70{ 71 if (!bl2->head) 72 return; 73 74 if (bl->head) 75 bl2->tail->bi_next = bl->head; 76 else 77 bl->tail = bl2->tail; 78 79 bl->head = bl2->head; 80} 81 82static inline struct bio *bio_list_pop(struct bio_list *bl) 83{ 84 struct bio *bio = bl->head; 85 86 if (bio) { 87 bl->head = bl->head->bi_next; 88 if (!bl->head) 89 bl->tail = NULL; 90 91 bio->bi_next = NULL; 92 } 93 94 return bio; 95} 96 97static inline struct bio *bio_list_get(struct bio_list *bl) 98{ 99 struct bio *bio = bl->head; 100 101 bl->head = bl->tail = NULL; 102 103 return bio; 104} 105 106#endif /* CONFIG_BLOCK */ 107#endif