[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.