[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [tyndur-devel] [PATCH] libc: Blockpuffer auf allen Dateien aktivieren
Am Samstag, 25. April 2009 16:47 schrieb Antoine Kaufmann:
> * libc: Blockpuffer auf allen Dateien aktivieren
> * libc: Buffer fuer stderr deaktivieren
> ---
> src/modules/include/lostio.h | 6 ++++++
> src/modules/lib/lostio/handler.c | 12 +++++++++---
> src/modules/lib/stdlibc/file.c | 30 ++++++++++++++++++++++++++++--
> src/modules/lib/stdlibc/stdio.c | 4 ++++
> 4 files changed, 47 insertions(+), 5 deletions(-)
>
> diff --git a/src/modules/include/lostio.h b/src/modules/include/lostio.h
> index 60cddf1..57e3cf7 100644
> --- a/src/modules/include/lostio.h
> +++ b/src/modules/include/lostio.h
> @@ -117,6 +117,12 @@ typedef struct
> } typehandle_t;
>
>
> +/// Geoeffnete Datei auf Clientseite (Wrapper fuer FILE)
> +struct lostio_internal_file {
> + io_resource_t res;
> + bool free_buffer;
> +};
> +
Sollte FILE nicht auch noch umdefiniert werden? Oder würde das zwangsläufig
was kaputtmachen? Falls nicht, brauchen auf jeden Fall die Sockets noch eine
Änderung, damit sie eine lostio_internal_file statt FILE durch die Gegend
kopieren.
> ///LostIO-Schnittstelle initialisieren
> void lostio_init(void);
> diff --git a/src/modules/lib/lostio/handler.c
> b/src/modules/lib/lostio/handler.c index ce61485..0c9c1b6 100644
> --- a/src/modules/lib/lostio/handler.c
> +++ b/src/modules/lib/lostio/handler.c
> @@ -63,6 +63,12 @@ void rpc_io_open(pid_t pid, dword correlation_id, size_t
> data_size, void* data)
>
> //Wird bei pipes als quelle verwendet
> io_resource_t* io_source = (io_resource_t*) ((dword)data + 1 +
> sizeof(pid_t)); +
> + // FIXME
> + struct lostio_internal_file* int_source = malloc(sizeof(*int_source));
> + int_source->res = *io_source;
> + int_source->free_buffer = FALSE;
> + io_source = &int_source->res;
>
> byte* attr = (byte*) data;
> pid_t* caller_pid = (pid_t*) ((dword)data + 1 );
> @@ -79,6 +85,7 @@ void rpc_io_open(pid_t pid, dword correlation_id, size_t
> data_size, void* data) {
> io_res.pid = 0;
> rpc_send_response(pid, correlation_id, sizeof(io_resource_t),
> (char*) &io_res); + free(io_source);
Das sollte free(int_source); heißen
> }
> else
> {
> @@ -120,6 +127,7 @@ void rpc_io_open(pid_t pid, dword correlation_id,
> size_t data_size, void* data) if(io_res.id == 0)
> {
> io_res.pid = 0;
> + free(io_source);
Nochmal.