[Cbe-oss-dev] [PATCH 1/3] libspe2: add nanosleep assist call

D. Herrendoerfer d.herrendoerfer at herrendoerfer.name
Wed Jun 6 12:53:51 EST 2007


Added ( all three ), 
please make sure, that the new call numbers get added to the ABI doc.

Thank you very much.

D.Herrendoerfer

On Mon, 2007-06-04 at 09:26 -0700, Patrick Mansfield wrote:
> Add an assist call for:
> 
> 	int nanosleep(struct timespec *req, struct timespec *rem)
> 
> Signed-off-by: Patrick Mansfield <patmans at us.ibm.com>
> 
> Index: libspe2/spebase/default_posix1_handler.c
> ===================================================================
> --- libspe2.orig/spebase/default_posix1_handler.c
> +++ libspe2/spebase/default_posix1_handler.c
> @@ -119,6 +119,7 @@ enum {
>  	SPE_POSIX1_ACCESS,
>  	SPE_POSIX1_DUP,
>  	SPE_POSIX1_TIME,
> +	SPE_POSIX1_NANOSLEEP,
>  	SPE_POSIX1_LAST_OPCODE,
>  };
>  #define SPE_POSIX1_NR_OPCODES	\
> @@ -1176,6 +1177,34 @@ int default_posix1_handler_gettimeofday(
>      return 0;
>  }
>  
> +/**
> + * default_posix1_handler_nanosleep
> + * @ls: base pointer to local store area.
> + * @opdata: POSIX.1 call opcode & data.
> + *
> + * Implement:
> + *     int nanosleep(struct timespec *req, struct timespec *rem);
> + */
> +int default_posix1_handler_nanosleep(char *ls, unsigned long opdata)
> +{
> +    DECL_2_ARGS();
> +    DECL_RET();
> +    struct timespec *req;
> +    struct timespec *rem;
> +    int rc;
> +
> +    DEBUG_PRINTF("%s\n", __func__);
> +    req = GET_LS_PTR(arg0->slot[0]);
> +    if (arg1->slot[0] == 0) {
> +        rem = NULL;
> +    } else {
> +        rem = GET_LS_PTR(arg1->slot[0]);
> +    }
> +    rc = nanosleep(req, rem);
> +    PUT_LS_RC(rc, 0, 0, errno);
> +    return 0;
> +}
> +
>  int (*default_posix1_funcs[SPE_POSIX1_NR_OPCODES]) (char *, unsigned long) = {
>  	[SPE_POSIX1_UNUSED]		= NULL,
>  	[SPE_POSIX1_ADJTIMEX]		= default_posix1_handler_adjtimex,
> @@ -1209,6 +1238,7 @@ int (*default_posix1_funcs[SPE_POSIX1_NR
>  	[SPE_POSIX1_ACCESS]		= default_posix1_handler_access,
>  	[SPE_POSIX1_DUP]		= default_posix1_handler_dup,
>  	[SPE_POSIX1_TIME]		= default_posix1_handler_time,
> +	[SPE_POSIX1_NANOSLEEP]		= default_posix1_handler_nanosleep,
>  };
>  
>  /**
> Index: libspe2/spebase/default_posix1_handler.h
> ===================================================================
> --- libspe2.orig/spebase/default_posix1_handler.h
> +++ libspe2/spebase/default_posix1_handler.h
> @@ -54,5 +54,6 @@ extern int default_posix1_handler_ftrunc
>  extern int default_posix1_handler_access(char *ls, unsigned long args);
>  extern int default_posix1_handler_dup(char *ls, unsigned long args);
>  extern int default_posix1_handler_time(char *ls, unsigned long args);
> +extern int default_posix1_handler_nanosleep(char *ls, unsigned long opdata);
>  
>  #endif /* __DEFAULT_POSIX1_HANDLER_H__ */
> _______________________________________________
> cbe-oss-dev mailing list
> cbe-oss-dev at ozlabs.org
> https://ozlabs.org/mailman/listinfo/cbe-oss-dev




More information about the cbe-oss-dev mailing list