bus: sync with kdbus

Pull in new kdbus changes, namely:
 - EOVERFLOW is replaces by KDBUS_RECV_RETURN_DROPPED_MSGS
 - ENOMSG is merged with EAGAIN for consistency
This commit is contained in:
David Herrmann
2015-02-17 18:16:07 +01:00
parent 4d2b1e0a3f
commit 83e30358f2
3 changed files with 15 additions and 10 deletions
+2 -5
View File
@@ -1345,15 +1345,12 @@ int bus_kernel_read_message(sd_bus *bus, bool hint_priority, int64_t priority) {
}
r = ioctl(bus->input_fd, KDBUS_CMD_RECV, &recv);
if (recv.return_flags & KDBUS_RECV_RETURN_DROPPED_MSGS)
log_debug("%s: kdbus reports %" PRIu64 " dropped broadcast messages, ignoring.", strna(bus->description), (uint64_t) recv.dropped_msgs);
if (r < 0) {
if (errno == EAGAIN)
return 0;
if (errno == EOVERFLOW) {
log_debug("%s: kdbus reports %" PRIu64 " dropped broadcast messages, ignoring.", strna(bus->description), (uint64_t) recv.dropped_msgs);
return 0;
}
return -errno;
}
+12 -4
View File
@@ -602,9 +602,15 @@ enum kdbus_recv_flags {
* @KDBUS_RECV_RETURN_INCOMPLETE_FDS: One or more file descriptors could not
* be installed. These descriptors in
* KDBUS_ITEM_FDS will carry the value -1.
* @KDBUS_RECV_RETURN_DROPPED_MSGS: There have been dropped messages since
* the last time a message was received.
* The 'dropped_msgs' counter contains the
* number of messages dropped pool
* overflows or other missed broadcasts.
*/
enum kdbus_recv_return_flags {
KDBUS_RECV_RETURN_INCOMPLETE_FDS = 1ULL << 0,
KDBUS_RECV_RETURN_DROPPED_MSGS = 1ULL << 1,
};
/**
@@ -614,10 +620,12 @@ enum kdbus_recv_return_flags {
* @return_flags: Command return flags, kernel → userspace
* @priority: Minimum priority of the messages to de-queue. Lowest
* values have the highest priority.
* @dropped_msgs: In case the KDBUS_CMD_RECV ioctl returns
* -EOVERFLOW, this field will contain the number of
* broadcast messages that have been lost since the
* last call.
* @dropped_msgs: In case there were any dropped messages since the last
* time a message was received, this will be set to the
* number of lost messages and
* KDBUS_RECV_RETURN_DROPPED_MSGS will be set in
* 'return_flags'. This can only happen if the ioctl
* returns 0 or EAGAIN.
* @msg: Return storage for received message.
* @items: Additional items for this command.
*
+1 -1
View File
@@ -119,7 +119,7 @@ int main(int argc, char *argv[]) {
assert_se(r == -EBUSY);
r = sd_bus_process_priority(b, -10, &m);
assert_se(r == -ENOMSG);
assert_se(r == 0);
r = sd_bus_process(b, &m);
assert_se(r > 0);