[systemd-devel] [PATCH] libsystemd-bus: trivial macro KDBUS_PART_HEADER_SIZE replace
Yin Kangkai
kangkai.yin at intel.com
Tue Dec 3 23:28:47 PST 2013
It's a little bit cleaner(?) to replace offsetof(struct kdbus_item, data) with
KDBUS_PART_HEADER_SIZE.
---
src/libsystemd-bus/bus-control.c | 16 ++++++++--------
src/libsystemd-bus/bus-kernel.c | 41 ++++++++++++++++++++--------------------
src/libsystemd-bus/bus-kernel.h | 2 +-
3 files changed, 29 insertions(+), 30 deletions(-)
diff --git a/src/libsystemd-bus/bus-control.c b/src/libsystemd-bus/bus-control.c
index 7a772ff..073e7aa 100644
--- a/src/libsystemd-bus/bus-control.c
+++ b/src/libsystemd-bus/bus-control.c
@@ -765,7 +765,7 @@ static int add_name_change_match(sd_bus *bus,
l = name ? strlen(name) : 0;
sz = ALIGN8(offsetof(struct kdbus_cmd_match, items) +
- offsetof(struct kdbus_item, name_change) +
+ KDBUS_PART_HEADER_SIZE +
offsetof(struct kdbus_notify_name_change, name) +
l+1);
@@ -776,7 +776,7 @@ static int add_name_change_match(sd_bus *bus,
item = m->items;
item->size =
- offsetof(struct kdbus_item, name_change) +
+ KDBUS_PART_HEADER_SIZE +
offsetof(struct kdbus_notify_name_change, name) +
l+1;
@@ -828,7 +828,7 @@ static int add_name_change_match(sd_bus *bus,
* for it */
sz = ALIGN8(offsetof(struct kdbus_cmd_match, items) +
- offsetof(struct kdbus_item, id_change) +
+ KDBUS_PART_HEADER_SIZE +
sizeof(struct kdbus_notify_id_change));
m = alloca0(sz);
@@ -837,7 +837,7 @@ static int add_name_change_match(sd_bus *bus,
m->src_id = KDBUS_SRC_ID_KERNEL;
item = m->items;
- item->size = offsetof(struct kdbus_item, id_change) + sizeof(struct kdbus_notify_id_change);
+ item->size = KDBUS_PART_HEADER_SIZE + sizeof(struct kdbus_notify_id_change);
item->id_change.id = name_id;
/* If the old name is unset or empty, then this can
@@ -907,7 +907,7 @@ static int bus_add_match_internal_kernel(
if (r > 0) {
sender = c->value_str;
sender_length = strlen(sender);
- sz += ALIGN8(offsetof(struct kdbus_item, str) + sender_length + 1);
+ sz += KDBUS_PART_SIZE(sender_length + 1);
}
break;
@@ -999,7 +999,7 @@ static int bus_add_match_internal_kernel(
}
if (using_bloom)
- sz += ALIGN8(offsetof(struct kdbus_item, data64) + BLOOM_SIZE);
+ sz += KDBUS_PART_SIZE(BLOOM_SIZE);
m = alloca0(sz);
m->size = sz;
@@ -1009,7 +1009,7 @@ static int bus_add_match_internal_kernel(
item = m->items;
if (using_bloom) {
- item->size = offsetof(struct kdbus_item, data64) + BLOOM_SIZE;
+ item->size = KDBUS_PART_HEADER_SIZE + BLOOM_SIZE;
item->type = KDBUS_MATCH_BLOOM;
memcpy(item->data64, bloom, BLOOM_SIZE);
@@ -1017,7 +1017,7 @@ static int bus_add_match_internal_kernel(
}
if (sender) {
- item->size = offsetof(struct kdbus_item, str) + sender_length + 1;
+ item->size = KDBUS_PART_HEADER_SIZE + sender_length + 1;
item->type = KDBUS_MATCH_SRC_NAME;
memcpy(item->str, sender, sender_length + 1);
}
diff --git a/src/libsystemd-bus/bus-kernel.c b/src/libsystemd-bus/bus-kernel.c
index b85a10d..56259f5 100644
--- a/src/libsystemd-bus/bus-kernel.c
+++ b/src/libsystemd-bus/bus-kernel.c
@@ -63,7 +63,7 @@ static void append_payload_vec(struct kdbus_item **d, const void *p, size_t sz)
* zeroes, which is useful to optimize certain padding
* conditions */
- (*d)->size = offsetof(struct kdbus_item, vec) + sizeof(struct kdbus_vec);
+ (*d)->size = KDBUS_PART_HEADER_SIZE + sizeof(struct kdbus_vec);
(*d)->type = KDBUS_ITEM_PAYLOAD_VEC;
(*d)->vec.address = PTR_TO_UINT64(p);
(*d)->vec.size = sz;
@@ -77,7 +77,7 @@ static void append_payload_memfd(struct kdbus_item **d, int memfd, size_t sz) {
assert(sz > 0);
*d = ALIGN8_PTR(*d);
- (*d)->size = offsetof(struct kdbus_item, memfd) + sizeof(struct kdbus_memfd);
+ (*d)->size = KDBUS_PART_HEADER_SIZE + sizeof(struct kdbus_memfd);
(*d)->type = KDBUS_ITEM_PAYLOAD_MEMFD;
(*d)->memfd.fd = memfd;
(*d)->memfd.size = sz;
@@ -91,7 +91,7 @@ static void append_destination(struct kdbus_item **d, const char *s, size_t leng
*d = ALIGN8_PTR(*d);
- (*d)->size = offsetof(struct kdbus_item, str) + length + 1;
+ (*d)->size = KDBUS_PART_HEADER_SIZE + length + 1;
(*d)->type = KDBUS_ITEM_DST_NAME;
memcpy((*d)->str, s, length + 1);
@@ -105,7 +105,7 @@ static void* append_bloom(struct kdbus_item **d, size_t length) {
*d = ALIGN8_PTR(*d);
- (*d)->size = offsetof(struct kdbus_item, data) + length;
+ (*d)->size = KDBUS_PART_HEADER_SIZE + length;
(*d)->type = KDBUS_ITEM_BLOOM;
r = (*d)->data;
@@ -120,7 +120,7 @@ static void append_fds(struct kdbus_item **d, const int fds[], unsigned n_fds) {
assert(n_fds > 0);
*d = ALIGN8_PTR(*d);
- (*d)->size = offsetof(struct kdbus_item, fds) + sizeof(int) * n_fds;
+ (*d)->size = KDBUS_PART_HEADER_SIZE + sizeof(int) * n_fds;
(*d)->type = KDBUS_ITEM_FDS;
memcpy((*d)->fds, fds, sizeof(int) * n_fds);
@@ -218,25 +218,24 @@ static int bus_message_setup_kmsg(sd_bus *b, sd_bus_message *m) {
sz = offsetof(struct kdbus_msg, items);
- assert_cc(ALIGN8(offsetof(struct kdbus_item, vec) + sizeof(struct kdbus_vec)) ==
- ALIGN8(offsetof(struct kdbus_item, memfd) + sizeof(struct kdbus_memfd)));
+ assert_cc(KDBUS_PART_SIZE(sizeof(struct kdbus_vec)) ==
+ KDBUS_PART_SIZE(sizeof(struct kdbus_memfd)));
/* Add in fixed header, fields header and payload */
- sz += (1 + m->n_body_parts) *
- ALIGN8(offsetof(struct kdbus_item, vec) + sizeof(struct kdbus_vec));
+ sz += (1 + m->n_body_parts) * KDBUS_PART_SIZE(sizeof(struct kdbus_vec));
/* Add space for bloom filter */
- sz += ALIGN8(offsetof(struct kdbus_item, data) + BLOOM_SIZE);
+ sz += KDBUS_PART_SIZE(BLOOM_SIZE);
/* Add in well-known destination header */
if (well_known) {
dl = strlen(m->destination);
- sz += ALIGN8(offsetof(struct kdbus_item, str) + dl + 1);
+ sz += KDBUS_PART_SIZE(dl + 1);
}
/* Add space for unix fds */
if (m->n_fds > 0)
- sz += ALIGN8(offsetof(struct kdbus_item, fds) + sizeof(int)*m->n_fds);
+ sz += KDBUS_PART_SIZE(sizeof(int) * m->n_fds);
m->kdbus = memalign(8, sz);
if (!m->kdbus) {
@@ -464,7 +463,7 @@ static void close_kdbus_msg(sd_bus *bus, struct kdbus_msg *k) {
KDBUS_PART_FOREACH(d, k, items) {
if (d->type == KDBUS_ITEM_FDS)
- close_many(d->fds, (d->size - offsetof(struct kdbus_item, fds)) / sizeof(int));
+ close_many(d->fds, (d->size - KDBUS_PART_HEADER_SIZE) / sizeof(int));
else if (d->type == KDBUS_ITEM_PAYLOAD_MEMFD)
close_nointr_nofail(d->memfd.fd);
}
@@ -622,7 +621,7 @@ static int bus_kernel_make_message(sd_bus *bus, struct kdbus_msg *k) {
KDBUS_PART_FOREACH(d, k, items) {
size_t l;
- l = d->size - offsetof(struct kdbus_item, data);
+ l = d->size - KDBUS_PART_HEADER_SIZE;
switch (d->type) {
@@ -682,7 +681,7 @@ static int bus_kernel_make_message(sd_bus *bus, struct kdbus_msg *k) {
KDBUS_PART_FOREACH(d, k, items) {
size_t l;
- l = d->size - offsetof(struct kdbus_item, data);
+ l = d->size - KDBUS_PART_HEADER_SIZE;
switch (d->type) {
@@ -1055,12 +1054,12 @@ int bus_kernel_create_bus(const char *name, char **s) {
return -errno;
make = alloca0(ALIGN8(offsetof(struct kdbus_cmd_bus_make, items) +
- offsetof(struct kdbus_item, str) +
+ KDBUS_PART_HEADER_SIZE +
DECIMAL_STR_MAX(uid_t) + 1 + strlen(name) + 1));
n = make->items;
sprintf(n->str, "%lu-%s", (unsigned long) getuid(), name);
- n->size = offsetof(struct kdbus_item, str) + strlen(n->str) + 1;
+ n->size = KDBUS_PART_HEADER_SIZE + strlen(n->str) + 1;
n->type = KDBUS_MAKE_NAME;
make->size = ALIGN8(offsetof(struct kdbus_cmd_bus_make, items) + n->size);
@@ -1113,12 +1112,12 @@ int bus_kernel_create_starter(const char *bus, const char *name) {
return -errno;
hello = alloca0(ALIGN8(offsetof(struct kdbus_cmd_hello, items) +
- offsetof(struct kdbus_item, str) +
+ KDBUS_PART_HEADER_SIZE +
strlen(name) + 1));
n = hello->items;
strcpy(n->str, name);
- n->size = offsetof(struct kdbus_item, str) + strlen(n->str) + 1;
+ n->size = KDBUS_PART_HEADER_SIZE + strlen(n->str) + 1;
n->type = KDBUS_ITEM_STARTER_NAME;
hello->size = ALIGN8(offsetof(struct kdbus_cmd_hello, items) + n->size);
@@ -1159,12 +1158,12 @@ int bus_kernel_create_namespace(const char *name, char **s) {
return -errno;
make = alloca0(ALIGN8(offsetof(struct kdbus_cmd_ns_make, items) +
- offsetof(struct kdbus_item, str) +
+ KDBUS_PART_HEADER_SIZE +
strlen(name) + 1));
n = make->items;
strcpy(n->str, name);
- n->size = offsetof(struct kdbus_item, str) + strlen(n->str) + 1;
+ n->size = KDBUS_PART_HEADER_SIZE + strlen(n->str) + 1;
n->type = KDBUS_MAKE_NAME;
make->size = ALIGN8(offsetof(struct kdbus_cmd_ns_make, items) + n->size);
diff --git a/src/libsystemd-bus/bus-kernel.h b/src/libsystemd-bus/bus-kernel.h
index a9dddc2..ff323c3 100644
--- a/src/libsystemd-bus/bus-kernel.h
+++ b/src/libsystemd-bus/bus-kernel.h
@@ -32,7 +32,7 @@
part = KDBUS_PART_NEXT(part))
#define KDBUS_PART_HEADER_SIZE offsetof(struct kdbus_item, data)
-#define KDBUS_ITEM_SIZE(s) ALIGN8((s) + KDBUS_PART_HEADER_SIZE)
+#define KDBUS_PART_SIZE(s) ALIGN8((s) + KDBUS_PART_HEADER_SIZE)
#define MEMFD_CACHE_MAX 32
--
1.8.2.1
More information about the systemd-devel
mailing list