move sleep_millisec to git-compat-util.h
PATCH 1/1 move sleep_millisec to git-compat-util.h
From: Han-Wen Nienhuys <[email protected]>
The sleep function is defined in wrapper.c, so it makes more sense to be a in system compatibility header.
---
move sleep_millisec to git-compat-util.h
The sleep function is defined in wrapper.c, so it makes more sense to be a in system compatibility header.
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-922%2Fhanwen%2Fsleep-header-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-922/hanwen/sleep-header-v1
Pull-Request: https://github.com/git/git/pull/922
cache.h | 1 - git-compat-util.h | 2 ++ 2 files changed, 2 insertions(+), 1 deletion(-)
cache.h +0 -1
@@ -1960,7 +1960,6 @@ int stat_validity_check(struct stat_validity *sv, const char *path);void stat_validity_update (struct stat_validity *sv,int fd);int versioncmp (const char *s1,const char *s2); -void sleep_millisec (int millisec);/* * Create a directory and (if share is nonzero) adjust its permissions
git-compat-util.h +2 -0
@@ -1354,4 +1354,6 @@ static inline void *container_of_or_null_offset(void *ptr, size_t offset) ((uintptr_t)&(ptr)->member - (uintptr_t)(ptr))#endif /* !__GNUC__ */ +void sleep_millisec (int millisec); +#endif
base-commit: faefdd61ec7c7f6f3c8c9907891465ac9a2a1475
Signature · 1 line
gitgitgadget
Quoted 8 lines · Han-Wen Nienhuys via GitGitGadget
From: Han-Wen Nienhuys <[email protected]>
The sleep function is defined in
wrapper.c, so it makes more sense to be a in system compatibility header.Signed-off-by Han-Wen Nienhuys <[email protected]>---
movesleep_millisectogit-compat-util.h
Makes sense.
Quoted 9 lines · Junio C Hamano
To: Han-Wen Nienhuys via GitGitGadget <[email protected]>
Cc: [email protected]; Han-Wen Nienhuys <[email protected]>; Han- Wen Nienhuys <[email protected]>
Subject: Re: [PATCH] movesleep_millisectogit-compat-util.hQuoted 2 lines · Han-Wen Nienhuys via GitGitGadget
From: Han-Wen Nienhuys <[email protected]>
Quoted 8 lines
Quoted 6 lines
The sleep function is defined in
wrapper.c, so it makes more sense to be a in system compatibility header.Signed-off-by Han-Wen Nienhuys <[email protected]>---
movesleep_millisectogit-compat-util.hMakes sense.
I have a platform fix that I'd like to apply once this makes it into the main code. The sleep_millisec uses poll(), which is rather heavy-weight on the NonStop platform. We have a much more efficient sleep function available (with microsecond resolution), which would be more useful unless there is a poll side-effect on which git depends. Would this be acceptable? I could push this at any time really.
index bcda41e374..972ecd67bf 100644
wrapper.c +8 -0
@@ -4,6 +4,10 @@#include "cache.h" #include "config.h" +#ifdef __TANDEM +#include <cextdecs> /* for PROCESS_DELAY_ */ +#endif +static int memory_limit_check (size_t size,int gentle) {static size_t limit =0 ;
@@ -650,7 +654,11 @@ void write_file(const char *path, const char *fmt, ...)void sleep_millisec (int millisec) { +#ifdef __TANDEM +PROCESS_DELAY_ (millisec *1000LL ); +#else poll (NULL ,0 , millisec); +#endif }int xgethostname (char *buf,size_t len)
Regards,
Randall
Quoted 6 lines · Randall S. Becker
I have a platform fix that I'd like to apply once this makes it into the main code. The
sleep_millisecusespoll(), which is rather heavy-weight on the NonStop platform. We have a much more efficient sleep function available (with microsecond resolution), which would be more useful unless there is a poll side-effect on which git depends. Would this be acceptable? I could push this at any time really.
We strongly prefer not to contaminate generic part of source with platform specific conditional compilation.
If this were a much larger helper function, it might make sense to perform the compat/*.c dance, but in this case:
* [PATCH 1/2] that implements sleep_millisec() in git-compat-util.h as a static inline function; and then
* [PATCH 2/2] that does the equivalent of your patch below, but in git-compat-util.h
might be the cleanest.
Quoted 29 lines
index
bcda41e374..972ecd67bf100644wrapper.c +8
-0@@ -4,6 +4,10 @@#include "cache.h" #include "config.h" +#ifdef __TANDEM +#include <cextdecs> /* for PROCESS_DELAY_ */ +#endif +static int memory_limit_check (size_t size,int gentle) {static size_t limit =0 ;@@ -650,7 +654,11 @@ void write_file(const char *path, const char *fmt, ...)void sleep_millisec (int millisec) { +#ifdef __TANDEM +PROCESS_DELAY_ (millisec *1000LL ); +#else poll (NULL ,0 , millisec); +#endif }int xgethostname (char *buf,size_t len)Regards,
Randall
Quoted 45 lines · Junio C Hamano
Quoted 6 lines · Randall S. Becker
I have a platform fix that I'd like to apply once this makes it into the main code. The
sleep_millisecusespoll(), which is rather heavy-weight on the NonStop platform. We have a much more efficient sleep function available (with microsecond resolution), which would be more useful unless there is a poll side-effect on which git depends. Would this be acceptable? I could push this at any time really.We strongly prefer not to contaminate generic part of source with platform specific conditional compilation.
If this were a much larger helper function, it might make sense to perform the compat/*.c dance, but in this case:
* [PATCH 1/2] that implements
sleep_millisec()ingit-compat-util.has a static inline function; and then* [PATCH 2/2] that does the equivalent of your patch below, but in
git-compat-util.hmight be the cleanest.
Quoted 23 lines
index
bcda41e374..972ecd67bf100644wrapper.c +6
-0@@ -4,6 +4,10 @@#include "cache.h" #include "config.h" +#ifdef __TANDEM +#include <cextdecs> /* for PROCESS_DELAY_ */ #endif +static int memory_limit_check (size_t size,int gentle) {static size_t limit =0 ;@@ -650,7 +654,11 @@ void write_file(const char *path, const char *fmt, ...)void sleep_millisec (int millisec) { +#ifdef __TANDEM +PROCESS_DELAY_ (millisec *1000LL );#else poll (NULL ,0 , millisec); +#endif }
Quoted 1 line
Quoted 1 line
int
xgethostname(char *buf, size_t len)
I just chatted with my team and we think that sticking with the existing poll call is probably better in the long term. We are planning to try to get git to work using PUT threads - but that is a longer project for a whole slew of reasons. It involves pulling all or most of the FLOSS stuff out, or making that configurable to use FLOSS when not using threads and not using FLOSS when using threads. It might be useful, however, to use usleep() instead of poll(NULL) when threading is used on most platforms as it is a more effective way of context switching between threads than select().
Regards,
Randall
Quoted 8 lines · Randall S. Becker
I just chatted with my team and we think that sticking with the existing poll call is probably better in the long term. We are planning to try to get git to work using PUT threads - but that is a longer project for a whole slew of reasons. It involves pulling all or most of the FLOSS stuff out, or making that configurable to use FLOSS when not using threads and not using FLOSS when using threads. It might be useful, however, to use
usleep()instead of poll(NULL) when threading is used on most platforms as it is a more effective way of context switching between threads thanselect().
Yeah, if usleep() is portable enough, that would probably be the ideal direction to go.