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:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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.
|
||||
*
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user