[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