mirror of
https://github.com/git/git.git
synced 2024-12-12 19:34:35 +08:00
380395d094
Throughout git, it is assumed that the WIN32 preprocessor symbol is defined on native Windows setups (mingw and msvc) and not on Cygwin. On Cygwin, most of the time git can pretend this is just another Unix machine, and Windows-specific magic is generally counterproductive. Unfortunately Cygwin *does* define the WIN32 symbol in some headers. Best to rely on a new git-specific symbol GIT_WINDOWS_NATIVE instead, defined as follows: #if defined(WIN32) && !defined(__CYGWIN__) # define GIT_WINDOWS_NATIVE #endif After this change, it should be possible to drop the CYGWIN_V15_WIN32API setting without any negative effect. [rj: %s/WINDOWS_NATIVE/GIT_WINDOWS_NATIVE/g ] Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk> Signed-off-by: Junio C Hamano <gitster@pobox.com>
62 lines
1.3 KiB
C
62 lines
1.3 KiB
C
#include "cache.h"
|
|
#include "thread-utils.h"
|
|
|
|
#if defined(hpux) || defined(__hpux) || defined(_hpux)
|
|
# include <sys/pstat.h>
|
|
#endif
|
|
|
|
/*
|
|
* By doing this in two steps we can at least get
|
|
* the function to be somewhat coherent, even
|
|
* with this disgusting nest of #ifdefs.
|
|
*/
|
|
#ifndef _SC_NPROCESSORS_ONLN
|
|
# ifdef _SC_NPROC_ONLN
|
|
# define _SC_NPROCESSORS_ONLN _SC_NPROC_ONLN
|
|
# elif defined _SC_CRAY_NCPU
|
|
# define _SC_NPROCESSORS_ONLN _SC_CRAY_NCPU
|
|
# endif
|
|
#endif
|
|
|
|
int online_cpus(void)
|
|
{
|
|
#ifdef _SC_NPROCESSORS_ONLN
|
|
long ncpus;
|
|
#endif
|
|
|
|
#ifdef GIT_WINDOWS_NATIVE
|
|
SYSTEM_INFO info;
|
|
GetSystemInfo(&info);
|
|
|
|
if ((int)info.dwNumberOfProcessors > 0)
|
|
return (int)info.dwNumberOfProcessors;
|
|
#elif defined(hpux) || defined(__hpux) || defined(_hpux)
|
|
struct pst_dynamic psd;
|
|
|
|
if (!pstat_getdynamic(&psd, sizeof(psd), (size_t)1, 0))
|
|
return (int)psd.psd_proc_cnt;
|
|
#endif
|
|
|
|
#ifdef _SC_NPROCESSORS_ONLN
|
|
if ((ncpus = (long)sysconf(_SC_NPROCESSORS_ONLN)) > 0)
|
|
return (int)ncpus;
|
|
#endif
|
|
|
|
return 1;
|
|
}
|
|
|
|
int init_recursive_mutex(pthread_mutex_t *m)
|
|
{
|
|
pthread_mutexattr_t a;
|
|
int ret;
|
|
|
|
ret = pthread_mutexattr_init(&a);
|
|
if (!ret) {
|
|
ret = pthread_mutexattr_settype(&a, PTHREAD_MUTEX_RECURSIVE);
|
|
if (!ret)
|
|
ret = pthread_mutex_init(m, &a);
|
|
pthread_mutexattr_destroy(&a);
|
|
}
|
|
return ret;
|
|
}
|