From: Kay Sievers Date: Sat, 4 Jan 2014 05:05:04 +0000 (+0400) Subject: split internal.h into defaults.h and util.h X-Git-Tag: upstream/0.20140120.123719~61 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4230cee9ebf35aff6cbe265d63ba8d10cbf5fb0e;p=platform%2Fcore%2Fsystem%2Fkdbus-bus.git split internal.h into defaults.h and util.h --- diff --git a/bus.h b/bus.h index 1d58b45..5af1712 100644 --- a/bus.h +++ b/bus.h @@ -16,7 +16,7 @@ #include #include -#include "internal.h" +#include "util.h" /** * struct kdbus_bus - bus in a namespace diff --git a/connection.h b/connection.h index 27babdf..7cfcec4 100644 --- a/connection.h +++ b/connection.h @@ -13,7 +13,8 @@ #ifndef __KDBUS_CONNECTION_H #define __KDBUS_CONNECTION_H -#include "internal.h" +#include "defaults.h" +#include "util.h" #include "metadata.h" #include "pool.h" diff --git a/defaults.h b/defaults.h new file mode 100644 index 0000000..50a9b6a --- /dev/null +++ b/defaults.h @@ -0,0 +1,55 @@ +/* + * Copyright (C) 2013 Kay Sievers + * Copyright (C) 2013 Greg Kroah-Hartman + * Copyright (C) 2013 Daniel Mack + * Copyright (C) 2013 Linux Foundation + * + * 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_DEFAULTS_H +#define __KDBUS_DEFAULTS_H + +/* maximum size of message header and items */ +#define KDBUS_MSG_MAX_SIZE SZ_8K + +/* maximum number of message items */ +#define KDBUS_MSG_MAX_ITEMS 128 + +/* maximum number of passed file descriptors */ +#define KDBUS_MSG_MAX_FDS 256 + +/* maximum message payload size */ +#define KDBUS_MSG_MAX_PAYLOAD_VEC_SIZE SZ_2M + +/* maximum length of well-known bus name */ +#define KDBUS_NAME_MAX_LEN 255 + +/* maximum length of bus, ns, ep name */ +#define KDBUS_MAKE_MAX_LEN 63 + +/* maximum size of make data */ +#define KDBUS_MAKE_MAX_SIZE SZ_32K + +/* maximum size of hello data */ +#define KDBUS_HELLO_MAX_SIZE SZ_32K + +/* maximum size of match data */ +#define KDBUS_MATCH_MAX_SIZE SZ_32K + +/* maximum size of policy data */ +#define KDBUS_POLICY_MAX_SIZE SZ_32K + +/* maximum number of queued messages per connection */ +#define KDBUS_CONN_MAX_MSGS 64 + +/* maximum number of well-known names */ +#define KDBUS_CONN_MAX_NAMES 64 + +/* maximum number of queud requests waiting ot a reply */ +#define KDBUS_CONN_MAX_REQUESTS_PENDING 64 + +#endif diff --git a/endpoint.h b/endpoint.h index 0db1bda..f3a37e2 100644 --- a/endpoint.h +++ b/endpoint.h @@ -13,7 +13,8 @@ #ifndef __KDBUS_EP_H #define __KDBUS_EP_H -#include "internal.h" +#include "defaults.h" +#include "util.h" /* * struct kdbus_endpoint - enpoint to access a bus diff --git a/internal.h b/internal.h deleted file mode 100644 index 8c1594f..0000000 --- a/internal.h +++ /dev/null @@ -1,146 +0,0 @@ -/* - * Copyright (C) 2013 Kay Sievers - * Copyright (C) 2013 Greg Kroah-Hartman - * Copyright (C) 2013 Daniel Mack - * Copyright (C) 2013 Linux Foundation - * - * 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_INTERNAL_H -#define __KDBUS_INTERNAL_H - -#include "kdbus.h" - -/* maximum size of message header and items */ -#define KDBUS_MSG_MAX_SIZE SZ_8K - -/* maximum number of message items */ -#define KDBUS_MSG_MAX_ITEMS 128 - -/* maximum number of passed file descriptors */ -#define KDBUS_MSG_MAX_FDS 256 - -/* maximum message payload size */ -#define KDBUS_MSG_MAX_PAYLOAD_VEC_SIZE SZ_2M - -/* maximum length of well-known bus name */ -#define KDBUS_NAME_MAX_LEN 255 - -/* maximum length of bus, ns, ep name */ -#define KDBUS_MAKE_MAX_LEN 63 - -/* maximum size of make data */ -#define KDBUS_MAKE_MAX_SIZE SZ_32K - -/* maximum size of hello data */ -#define KDBUS_HELLO_MAX_SIZE SZ_32K - -/* maximum size of match data */ -#define KDBUS_MATCH_MAX_SIZE SZ_32K - -/* maximum size of policy data */ -#define KDBUS_POLICY_MAX_SIZE SZ_32K - -/* maximum number of queued messages per connection */ -#define KDBUS_CONN_MAX_MSGS 64 - -/* maximum number of well-known names */ -#define KDBUS_CONN_MAX_NAMES 64 - -/* maximum number of queud requests waiting ot a reply */ -#define KDBUS_CONN_MAX_REQUESTS_PENDING 64 - -/* all exported addresses are 64 bit */ -#define KDBUS_PTR(addr) ((void __user *)(uintptr_t)(addr)) - -/* all exported sizes are 64 bit and data aligned to 64 bit */ -#define KDBUS_ALIGN8(s) ALIGN((s), 8) -#define KDBUS_IS_ALIGNED8(s) (IS_ALIGNED(s, 8)) - -/* generic access and iterators over a stream of items */ -#define KDBUS_ITEM_HEADER_SIZE offsetof(struct kdbus_item, data) -#define KDBUS_ITEM_SIZE(s) KDBUS_ALIGN8(KDBUS_ITEM_HEADER_SIZE + (s)) -#define KDBUS_ITEM_NEXT(item) \ - (typeof(item))(((u8 *)item) + KDBUS_ALIGN8((item)->size)) -#define KDBUS_ITEM_FOREACH(item, head, first) \ - for (item = (head)->first; \ - (u8 *)(item) < (u8 *)(head) + (head)->size; \ - item = KDBUS_ITEM_NEXT(item)) -#define KDBUS_ITEM_VALID(item, head) \ - ((item)->size > KDBUS_ITEM_HEADER_SIZE && \ - (u8 *)(item) + (item)->size <= (u8 *)(head) + (head)->size) -#define KDBUS_ITEM_END(item, head) \ - ((u8 *)item == ((u8 *)(head) + KDBUS_ALIGN8((head)->size))) - -/** - * kdbus_size_get_user - read the size variable from user memory - * @_s: Size variable - * @_b: Buffer to read from - * @_t: Structure, "size" is a member of - * - * Returns: the result of copy_from_user() - */ -#define kdbus_size_get_user(_s, _b, _t) \ -({ \ - u64 __user *_sz = (void __user *)(_b) + offsetof(typeof(_t), size); \ - copy_from_user(_s, _sz, sizeof(__u64)); \ -}) - -/** - * kdbus_offset_set_user - write the offset variable to user memory - * @_s: Offset variable - * @_b: Buffer to write to - * @_t: Structure, "offset" is a member of - * - * Returns: the result of copy_to_user() - */ -#define kdbus_offset_set_user(_s, _b, _t) \ -({ \ - u64 __user *_sz = (void __user *)(_b) + offsetof(_t, offset); \ - copy_to_user(_sz, _s, sizeof(__u64)); \ -}) - -/** - * kdbus_check_strlen - check length of a string at the end a structure - * @_p: A pointer to a structure that has a size member and - * a variable string at its end - * @_s: The name of the dynamically sized string member - * - * Returns: 1 if the string's end marker is withing the struct, or 0 otherwise. - */ -#define kdbus_check_strlen(_p, _s) \ -({ \ - size_t _max = (_p)->size - offsetof(typeof(*(_p)), _s); \ - _max == 0 || strnlen((_p)->_s, _max) != _max; \ -}) - -/** - * kdbus_validate_nul - check the validity of a sized string - * @s: String - * @l: Length of string - * - * Validate that a given string matches the given size, and the - * string is \0 terminated. - * - * Returns: true if the given string is valid - */ -static inline bool kdbus_validate_nul(const char *s, size_t l) -{ - return l > 0 && memchr(s, '\0', l) == s + l - 1; -} - -/** - * kdbus_str_hash - calculate a hash - * @str: String - * - * Returns: hash value - */ -static inline unsigned int kdbus_str_hash(const char *str) -{ - return full_name_hash(str, strlen(str)); -} -#endif diff --git a/main.c b/main.c index f7f1e53..b865d15 100644 --- a/main.c +++ b/main.c @@ -18,7 +18,8 @@ #include #include -#include "internal.h" +#include "defaults.h" +#include "util.h" #include "namespace.h" static int __init kdbus_init(void) diff --git a/memfd.c b/memfd.c index 2c08891..2af6291 100644 --- a/memfd.c +++ b/memfd.c @@ -25,6 +25,7 @@ #include #include "memfd.h" +#include "util.h" static const struct file_operations kdbus_memfd_fops; diff --git a/memfd.h b/memfd.h index 7fc327a..3a7b213 100644 --- a/memfd.h +++ b/memfd.h @@ -13,8 +13,6 @@ #ifndef __KDBUS_MEMFD_H #define __KDBUS_MEMFD_H -#include "internal.h" - bool kdbus_is_memfd(const struct file *fp); bool kdbus_is_memfd_sealed(const struct file *fp); u64 kdbus_memfd_size(const struct file *fp); diff --git a/message.h b/message.h index 1fc6f2e..55fa6cf 100644 --- a/message.h +++ b/message.h @@ -13,7 +13,7 @@ #ifndef __KDBUS_MESSAGE_H #define __KDBUS_MESSAGE_H -#include "internal.h" +#include "util.h" #include "metadata.h" /** diff --git a/namespace.c b/namespace.c index a9aa379..836e96f 100644 --- a/namespace.c +++ b/namespace.c @@ -20,9 +20,10 @@ #include #include +#include "defaults.h" +#include "util.h" #include "bus.h" #include "handle.h" -#include "internal.h" #include "namespace.h" /* map of majors to namespaces */ diff --git a/pool.c b/pool.c index 3f5ae36..5f7339e 100644 --- a/pool.c +++ b/pool.c @@ -25,7 +25,7 @@ #include #include -#include "internal.h" +#include "util.h" #include "pool.h" /** diff --git a/util.h b/util.h new file mode 100644 index 0000000..bee27ab --- /dev/null +++ b/util.h @@ -0,0 +1,107 @@ +/* + * Copyright (C) 2013 Kay Sievers + * Copyright (C) 2013 Greg Kroah-Hartman + * Copyright (C) 2013 Daniel Mack + * Copyright (C) 2013 Linux Foundation + * + * 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_UTIL_H +#define __KDBUS_UTIL_H + +#include "kdbus.h" + +/* all exported addresses are 64 bit */ +#define KDBUS_PTR(addr) ((void __user *)(uintptr_t)(addr)) + +/* all exported sizes are 64 bit and data aligned to 64 bit */ +#define KDBUS_ALIGN8(s) ALIGN((s), 8) +#define KDBUS_IS_ALIGNED8(s) (IS_ALIGNED(s, 8)) + +/* generic access and iterators over a stream of items */ +#define KDBUS_ITEM_HEADER_SIZE offsetof(struct kdbus_item, data) +#define KDBUS_ITEM_SIZE(s) KDBUS_ALIGN8(KDBUS_ITEM_HEADER_SIZE + (s)) +#define KDBUS_ITEM_NEXT(item) \ + (typeof(item))(((u8 *)item) + KDBUS_ALIGN8((item)->size)) +#define KDBUS_ITEM_FOREACH(item, head, first) \ + for (item = (head)->first; \ + (u8 *)(item) < (u8 *)(head) + (head)->size; \ + item = KDBUS_ITEM_NEXT(item)) +#define KDBUS_ITEM_VALID(item, head) \ + ((item)->size > KDBUS_ITEM_HEADER_SIZE && \ + (u8 *)(item) + (item)->size <= (u8 *)(head) + (head)->size) +#define KDBUS_ITEM_END(item, head) \ + ((u8 *)item == ((u8 *)(head) + KDBUS_ALIGN8((head)->size))) + +/** + * kdbus_size_get_user - read the size variable from user memory + * @_s: Size variable + * @_b: Buffer to read from + * @_t: Structure, "size" is a member of + * + * Returns: the result of copy_from_user() + */ +#define kdbus_size_get_user(_s, _b, _t) \ +({ \ + u64 __user *_sz = (void __user *)(_b) + offsetof(typeof(_t), size); \ + copy_from_user(_s, _sz, sizeof(__u64)); \ +}) + +/** + * kdbus_offset_set_user - write the offset variable to user memory + * @_s: Offset variable + * @_b: Buffer to write to + * @_t: Structure, "offset" is a member of + * + * Returns: the result of copy_to_user() + */ +#define kdbus_offset_set_user(_s, _b, _t) \ +({ \ + u64 __user *_sz = (void __user *)(_b) + offsetof(_t, offset); \ + copy_to_user(_sz, _s, sizeof(__u64)); \ +}) + +/** + * kdbus_check_strlen - check length of a string at the end a structure + * @_p: A pointer to a structure that has a size member and + * a variable string at its end + * @_s: The name of the dynamically sized string member + * + * Returns: 1 if the string's end marker is withing the struct, or 0 otherwise. + */ +#define kdbus_check_strlen(_p, _s) \ +({ \ + size_t _max = (_p)->size - offsetof(typeof(*(_p)), _s); \ + _max == 0 || strnlen((_p)->_s, _max) != _max; \ +}) + +/** + * kdbus_validate_nul - check the validity of a sized string + * @s: String + * @l: Length of string + * + * Validate that a given string matches the given size, and the + * string is \0 terminated. + * + * Returns: true if the given string is valid + */ +static inline bool kdbus_validate_nul(const char *s, size_t l) +{ + return l > 0 && memchr(s, '\0', l) == s + l - 1; +} + +/** + * kdbus_str_hash - calculate a hash + * @str: String + * + * Returns: hash value + */ +static inline unsigned int kdbus_str_hash(const char *str) +{ + return full_name_hash(str, strlen(str)); +} +#endif