Re: Porting git to HP NonStop

2 messages, 2 authors, 2016-06-15 · open the first message on its own page

Re: Porting git to HP NonStop

From: Junio C Hamano <hidden>
Date: 2016-06-15 22:54:33

"Joachim Schmitz" [off-list ref] writes:
Hi folks

There another API missing on HP NonStop and that is setitimer(), used in progress.c and build/log.c
I do have a homebrewed implementation, on top of alarm(), it goes like this:

#include "../git-compat-util.h"
#undef getitimer
#undef setitimer


int
git_getitimer(int which, struct itimerval *value)
See Documentation/CodingGuidelines for style nits.
{
        int ret = 0;

        switch (which) {
                case ITIMER_REAL:
                        value->it_value.tv_usec = 0;
                        value->it_value.tv_sec = alarm(0);
                        ret = 0; /* if alarm() fails we get a SIGLIMIT */
                        break;
                case ITIMER_VIRTUAL: /* FALLTHRU */
                case ITIMER_PROF: errno = ENOTSUP; ret = -1; break;
                default: errno = EINVAL; ret = -1;
        }
        return ret;
}

int
git_setitimer(int which, const struct itimerval *value,
                        struct itimerval *ovalue)
{
        int ret = 0;

        if (!value
                || value->it_value.tv_usec < 0
                || value->it_value.tv_usec > 1000000
                || value->it_value.tv_sec < 0) {
                errno = EINVAL;
                return -1;
        }

        else if (ovalue)
                if (!git_getitimer(which, ovalue))
                        return -1; /* errno set in git_getitimer() */

        else
        switch (which) {
                case ITIMER_REAL:
                        alarm(value->it_value.tv_sec +
                                (value->it_value.tv_usec > 0) ? 1 : 0);
                        ret = 0; /* if alarm() fails we get a SIGLIMIT */
                        break;
                case ITIMER_VIRTUAL: /* FALLTHRU */
                case ITIMER_PROF: errno = ENOTSUP; ret = -1; break;
                default: errno = EINVAL; ret = -1;
        }

        return ret;
}


Worth being added to compat/, e.g. as setitimer.c, or, as itimer.c
(as a by-product, it has getitimer() too)?
If it helps your port, compat/itimer.c sounds like a good place.
Doesn't it need a new header file to introduce structures and
constants, too?

RE: Porting git to HP NonStop

From: Joachim Schmitz <hidden>
Date: 2016-06-15 22:54:33

From: Junio C Hamano [mailto:gitster@pobox.com]
Sent: Wednesday, August 22, 2012 10:50 PM
To: Joachim Schmitz
Cc: git@vger.kernel.org; rsbecker@nexbridge.com
Subject: Re: Porting git to HP NonStop

"Joachim Schmitz" [off-list ref] writes:
quoted
Hi folks

There another API missing on HP NonStop and that is setitimer(), used
in progress.c and build/log.c I do have a homebrewed implementation, on
top
of alarm(), it goes like this:
quoted
#include "../git-compat-util.h"
#undef getitimer
#undef setitimer


int
git_getitimer(int which, struct itimerval *value)
See Documentation/CodingGuidelines for style nits.
Will do and adjust code accordingly. Here I was more concerned about content
though ;-)

...
quoted
Worth being added to compat/, e.g. as setitimer.c, or, as itimer.c (as
a by-product, it has getitimer() too)?
If it helps your port, compat/itimer.c sounds like a good place.
Doesn't it need a new header file to introduce structures and constants,
too?

You mean the ITIMER_* and struct itimerval, right?
On NonStop these are available in <sys/time.h>, so here's no need to add
them.

Bye, Jojo
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help