/* * Copyright (C) 2013-2015 Kay Sievers * Copyright (C) 2013-2015 Greg Kroah-Hartman * Copyright (C) 2013-2015 Daniel Mack * Copyright (C) 2013-2015 David Herrmann * Copyright (C) 2013-2015 Linux Foundation * Copyright (C) 2014-2015 Djalal Harouni * * kdbus is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the * Free Software Foundation; either version 2.1 of the License, or (at * your option) any later version. */ #ifndef __KDBUS_POOL_H #define __KDBUS_POOL_H #include struct kdbus_pool; struct kdbus_pool_slice; struct kdbus_pool *kdbus_pool_new(const char *name, size_t size); void kdbus_pool_free(struct kdbus_pool *pool); void kdbus_pool_accounted(struct kdbus_pool *pool, size_t *size, size_t *acc); int kdbus_pool_mmap(const struct kdbus_pool *pool, struct vm_area_struct *vma); int kdbus_pool_release_offset(struct kdbus_pool *pool, size_t off); void kdbus_pool_publish_empty(struct kdbus_pool *pool, u64 *off, u64 *size); struct kdbus_pool_slice *kdbus_pool_slice_alloc(struct kdbus_pool *pool, size_t size, bool accounted); void kdbus_pool_slice_release(struct kdbus_pool_slice *slice); void kdbus_pool_slice_publish(struct kdbus_pool_slice *slice, u64 *out_offset, u64 *out_size); off_t kdbus_pool_slice_offset(const struct kdbus_pool_slice *slice); size_t kdbus_pool_slice_size(const struct kdbus_pool_slice *slice); int kdbus_pool_slice_copy(const struct kdbus_pool_slice *slice_dst, const struct kdbus_pool_slice *slice_src); ssize_t kdbus_pool_slice_copy_kvec(const struct kdbus_pool_slice *slice, loff_t off, struct kvec *kvec, size_t kvec_count, size_t total_len); ssize_t kdbus_pool_slice_copy_iovec(const struct kdbus_pool_slice *slice, loff_t off, struct iovec *iov, size_t iov_count, size_t total_len); #endif