1.1 --- a/server/src/main.cc Sat May 04 19:14:32 2019 +0200
1.2 +++ b/server/src/main.cc Sun May 19 00:47:05 2019 +0200
1.3 @@ -44,7 +44,7 @@
1.4
1.5 /* Virtual filesystem server. */
1.6
1.7 -class Vfs_server : public Server
1.8 +class Vfs_server : public OpeningServer
1.9 {
1.10 private:
1.11 /* NOTE: Improvised structure! */
1.12 @@ -55,6 +55,7 @@
1.13
1.14 public:
1.15 explicit Vfs_server()
1.16 + : OpeningServer()
1.17 {
1.18 }
1.19
1.20 @@ -83,7 +84,7 @@
1.21 void open(int op, ipc_message_t *msg)
1.22 {
1.23 int flags;
1.24 - l4_cap_idx_t server;
1.25 + l4_cap_idx_t server, irq;
1.26 l4re_ds_t ds;
1.27 size_t size;
1.28 char *buffer;
1.29 @@ -93,9 +94,9 @@
1.30
1.31 flags = ipc_message_get_word(msg, 0);
1.32
1.33 - /* Obtain the dataspace. */
1.34 + /* Obtain the dataspace and IRQ object. */
1.35
1.36 - err = import_dataspace(msg, 0, &ds, (l4_addr_t *) &buffer);
1.37 + err = import_dataspace(msg, 0, &ds, (l4_addr_t *) &buffer) || import_capability(msg, 1, &irq);
1.38 if (err)
1.39 {
1.40 send_error(msg, -L4_EIO);
1.41 @@ -122,7 +123,7 @@
1.42 NOTE: The L4_MSGTAG_PROPAGATE flag is not supported by Fiasco.OC, so this
1.43 NOTE: object has to act as intermediary. */
1.44
1.45 - err = fs_ipc_open(flags, _servers[selected], op, ds, &server, &size);
1.46 + err = fs_ipc_open(flags, _servers[selected], op, ds, irq, &server, &size);
1.47 if (err)
1.48 {
1.49 send_error(msg, -L4_EIO);
1.50 @@ -295,8 +296,8 @@
1.51
1.52 fclose(fp);
1.53
1.54 - /* Enter the IPC server loop expecting at most two items. */
1.55 + /* Enter the IPC server loop. */
1.56
1.57 - server_loop(2);
1.58 + server_obj.loop();
1.59 return 0;
1.60 }