# HG changeset patch # User Paul Boddie # Date 1558219625 -7200 # Node ID 627015c1ecf2fbe136e2067efbc93533fa57fafc # Parent e4b1059bfd2c3225bcb36134a33ba59738e183bf Updated open operations to accept and propagate notification IRQ objects. diff -r e4b1059bfd2c -r 627015c1ecf2 server/src/main.cc --- a/server/src/main.cc Sat May 04 19:14:32 2019 +0200 +++ b/server/src/main.cc Sun May 19 00:47:05 2019 +0200 @@ -44,7 +44,7 @@ /* Virtual filesystem server. */ -class Vfs_server : public Server +class Vfs_server : public OpeningServer { private: /* NOTE: Improvised structure! */ @@ -55,6 +55,7 @@ public: explicit Vfs_server() + : OpeningServer() { } @@ -83,7 +84,7 @@ void open(int op, ipc_message_t *msg) { int flags; - l4_cap_idx_t server; + l4_cap_idx_t server, irq; l4re_ds_t ds; size_t size; char *buffer; @@ -93,9 +94,9 @@ flags = ipc_message_get_word(msg, 0); - /* Obtain the dataspace. */ + /* Obtain the dataspace and IRQ object. */ - err = import_dataspace(msg, 0, &ds, (l4_addr_t *) &buffer); + err = import_dataspace(msg, 0, &ds, (l4_addr_t *) &buffer) || import_capability(msg, 1, &irq); if (err) { send_error(msg, -L4_EIO); @@ -122,7 +123,7 @@ NOTE: The L4_MSGTAG_PROPAGATE flag is not supported by Fiasco.OC, so this NOTE: object has to act as intermediary. */ - err = fs_ipc_open(flags, _servers[selected], op, ds, &server, &size); + err = fs_ipc_open(flags, _servers[selected], op, ds, irq, &server, &size); if (err) { send_error(msg, -L4_EIO); @@ -295,8 +296,8 @@ fclose(fp); - /* Enter the IPC server loop expecting at most two items. */ + /* Enter the IPC server loop. */ - server_loop(2); + server_obj.loop(); return 0; }