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 c016e2257acd00a7ffd87fa1eec896138563d1aa 68 lines 1.0 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 12struct bio_list { 13 struct bio *head; 14 struct bio *tail; 15}; 16 17static inline void bio_list_init(struct bio_list *bl) 18{ 19 bl->head = bl->tail = NULL; 20} 21 22static inline void bio_list_add(struct bio_list *bl, struct bio *bio) 23{ 24 bio->bi_next = NULL; 25 26 if (bl->tail) 27 bl->tail->bi_next = bio; 28 else 29 bl->head = bio; 30 31 bl->tail = bio; 32} 33 34static inline void bio_list_merge(struct bio_list *bl, struct bio_list *bl2) 35{ 36 if (bl->tail) 37 bl->tail->bi_next = bl2->head; 38 else 39 bl->head = bl2->head; 40 41 bl->tail = bl2->tail; 42} 43 44static inline struct bio *bio_list_pop(struct bio_list *bl) 45{ 46 struct bio *bio = bl->head; 47 48 if (bio) { 49 bl->head = bl->head->bi_next; 50 if (!bl->head) 51 bl->tail = NULL; 52 53 bio->bi_next = NULL; 54 } 55 56 return bio; 57} 58 59static inline struct bio *bio_list_get(struct bio_list *bl) 60{ 61 struct bio *bio = bl->head; 62 63 bl->head = bl->tail = NULL; 64 65 return bio; 66} 67 68#endif