diff options
author | Andrew Jeffery <andrew@aj.id.au> | 2018-08-24 07:14:25 +0930 |
---|---|---|
committer | Andrew Jeffery <andrew@aj.id.au> | 2018-09-14 16:52:34 +0930 |
commit | 40ef67be48a11e35cbe362005737e28c4dc618e2 (patch) | |
tree | 797e55334228ff4f3ea3ac2730cf4b57493e8f65 | |
parent | c2cbb3d82d34455fb8e61a43bbf2886fbee68e1a (diff) | |
download | phosphor-mboxbridge-40ef67be48a11e35cbe362005737e28c4dc618e2.tar.gz phosphor-mboxbridge-40ef67be48a11e35cbe362005737e28c4dc618e2.zip |
transport: dbus: Implement mark_dirty
Change-Id: I989d5e2a65950cb936fca77d28f7a540d3ec90a2
Signed-off-by: Andrew Jeffery <andrew@aj.id.au>
-rw-r--r-- | transport_dbus.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/transport_dbus.c b/transport_dbus.c index 435176f..044e8dc 100644 --- a/transport_dbus.c +++ b/transport_dbus.c @@ -308,6 +308,39 @@ static int transport_dbus_close_window(sd_bus_message *m, void *userdata, } +static int transport_dbus_mark_dirty(sd_bus_message *m, void *userdata, + sd_bus_error *ret_error) +{ + struct mbox_context *context = userdata; + struct protocol_mark_dirty io; + sd_bus_message *n; + int rc; + + if (!context) { + MSG_ERR("DBUS Internal Error\n"); + return -EINVAL; + } + + rc = sd_bus_message_read(m, "qq", &io.req.v2.offset, &io.req.v2.size); + if (rc < 0) { + MSG_ERR("DBUS error reading message: %s\n", strerror(-rc)); + return rc; + } + + rc = context->protocol->mark_dirty(context, &io); + if (rc < 0) { + return rc; + } + + rc = sd_bus_message_new_method_return(m, &n); + if (rc < 0) { + MSG_ERR("sd_bus_message_new_method_return failed: %d\n", rc); + return rc; + } + + return sd_bus_send(NULL, n, NULL); +} + static int transport_dbus_ack(sd_bus_message *m, void *userdata, sd_bus_error *ret_error) { @@ -395,6 +428,8 @@ static const sd_bus_vtable protocol_v2_vtable[] = { SD_BUS_VTABLE_UNPRIVILEGED), SD_BUS_METHOD("CloseWindow", "y", NULL, &transport_dbus_close_window, SD_BUS_VTABLE_UNPRIVILEGED), + SD_BUS_METHOD("MarkDirty", "qq", NULL, &transport_dbus_mark_dirty, + SD_BUS_VTABLE_UNPRIVILEGED), SD_BUS_METHOD("Ack", "y", NULL, &transport_dbus_ack, SD_BUS_VTABLE_UNPRIVILEGED), SD_BUS_PROPERTY("FlashControlLost", "b", transport_dbus_get_property, |