[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Lost] [Patch] Hardlinks für LostIO
Toni Kaufmann schrieb:
Index: console/console.c
Index: fat/main.c
Index: floppy/floppy.c
Index: gui/src/main.c
Index: kbc/keyboard.c
Index: kbc/mouse.c
Index: keyboard/keyboard.c
Wird Zeit, daß wir das mal endgültig rauswerfen...
Index: tcpip/lostio_if.c
Index: textterm/main.c
Index: vesa/main.c
Index: vga/main.c
Index: videodriver/main.c
Index: vterm/lostio.c
Index: lib/lostio/types/ramfile.c
Index: lib/lostio/types/directory.c
Index: lib/lostio/lostio.c
cmos und ide fehlen, wie ich das sehen.
+ // RPC durchfuehren und auf Ergebnis warten
+ result = rpc_get_int(target_file->pid, "IO_LINK ", size, buffer);
+ switch (result) {
+ // Ziel oder Verzeichnis nicht in Ordnung
+ case -1:
+ errno = ENOENT;
result = -1;
Zwar theoretisch unnötig, aber sowas schreibt man nochmal explizit hin.
Denn die zurückgegebene -1 und die neue -1 sind semantisch nicht
dasselbe. Und irgendwann kommt garantiert einer, ändert den
RPC-Rückgabewert und wundert sich.
+
+ // Sollte nicht passieren
+ return result;
Wieso sollte das nicht passieren? ;-)
+ // RPC durchfuehren und auf Ergebnis warten
+ result = rpc_get_int(link_dir->pid, "IO_ULINK", size, buffer);
+ switch (result) {
+ // Ziel oder Verzeichnis nicht in Ordnung
+ case -1:
+ errno = ENOENT;
Siehe oben
+/**
+ * Ein Prozess hat ein io_link auf einem File-Handle dieses Treibers ausgefuehrt
+ */
Rückgabewerte erklären
+void rpc_io_link(pid_t pid, dword correlation_id, size_t data_size, void* data)
+{
+ io_link_request_t* link_request = (io_link_request_t*) data;
+
+ // Pruefen, ob das Format stimmt, also ob soviele Daten da sind, wie wir
+ // erwarten
+ if (((link_request->name_len + sizeof(io_link_request_t)) > data_size) ||
+ (strnlen(link_request->name, link_request->name_len + 1) !=
+ link_request->name_len))
+ {
+ rpc_send_int_response(pid, correlation_id, -3);
+ return;
+ }
Guter Ansatz, die Prüfung vorher, ob sizeof(io_link_request_t) >
data_size fehlt aber noch. Sonst bekommst du deinen PF halt in diesem Check.
/**
+ * Ein Prozess hat ein io_remove auf einem File-Handle dieses Treibers ausgefuehrt
+ */
Rückgabewerte