Add a no-op setitimer() wrapper

The current code uses setitimer() only for reducing perceived
latency.  On platforms that lack setitimer() (e.g. HP NonStop),
allow builders to say "make NO_SETITIMER=YesPlease" to use a no-op
substitute, as doing so would not affect correctness.

HP NonStop does provide struct itimerval, but other platforms may
not, so this is taken care of in this commit too, by setting
NO_STRUCT_ITIMERVAL.

Signed-off-by: Joachim Schmitz <jojo@schmitz-digital.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Joachim Schmitz 2012-09-08 18:54:34 +02:00 коммит произвёл Junio C Hamano
Родитель fab4b04e4b
Коммит 7f9e848cf8
2 изменённых файлов: 23 добавлений и 0 удалений

Просмотреть файл

@ -157,6 +157,11 @@ all::
# Define NO_PREAD if you have a problem with pread() system call (e.g. # Define NO_PREAD if you have a problem with pread() system call (e.g.
# cygwin1.dll before v1.5.22). # cygwin1.dll before v1.5.22).
# #
# Define NO_SETITIMER if you don't have setitimer()
#
# Define NO_STRUCT_ITIMERVAL if you don't have struct itimerval
# This also implies NO_SETITIMER
#
# Define NO_THREAD_SAFE_PREAD if your pread() implementation is not # Define NO_THREAD_SAFE_PREAD if your pread() implementation is not
# thread-safe. (e.g. compat/pread.c or cygwin) # thread-safe. (e.g. compat/pread.c or cygwin)
# #
@ -1670,6 +1675,13 @@ endif
ifdef OBJECT_CREATION_USES_RENAMES ifdef OBJECT_CREATION_USES_RENAMES
COMPAT_CFLAGS += -DOBJECT_CREATION_MODE=1 COMPAT_CFLAGS += -DOBJECT_CREATION_MODE=1
endif endif
ifdef NO_STRUCT_ITIMERVAL
COMPAT_CFLAGS += -DNO_STRUCT_ITIMERVAL
NO_SETITIMER=YesPlease
endif
ifdef NO_SETITIMER
COMPAT_CFLAGS += -DNO_SETITIMER
endif
ifdef NO_PREAD ifdef NO_PREAD
COMPAT_CFLAGS += -DNO_PREAD COMPAT_CFLAGS += -DNO_PREAD
COMPAT_OBJS += compat/pread.o COMPAT_OBJS += compat/pread.o

Просмотреть файл

@ -162,6 +162,17 @@
#define probe_utf8_pathname_composition(a,b) #define probe_utf8_pathname_composition(a,b)
#endif #endif
#ifdef NO_STRUCT_ITIMERVAL
struct itimerval {
struct timeval it_interval;
struct timeval it_value;
}
#endif
#ifdef NO_SETITIMER
#define setitimer(which,value,ovalue)
#endif
#ifndef NO_LIBGEN_H #ifndef NO_LIBGEN_H
#include <libgen.h> #include <libgen.h>
#else #else