* cygmalloc.h (MALLOC_FAILURE_ACTION): Define empty.

* cygwin.din (posix_madvise): Export.
	(posix_memalign): Export.
	* fhandler.cc (fhandler_base::fpathconf): Return useful values in
	_PC_VDISABLE, _PC_SYNC_IO and _PC_SYMLINK_MAX cases.
	* malloc_wrapper.cc (malloc): Set errno here since it's not set in
	dlmalloc.c anymore.
	(realloc): Ditto.
	(calloc): Ditto.
	(memalign): Ditto.
	(valloc): Ditto.
	(posix_memalign): New function.
	* mmap.cc (posix_madvise): New function.
	* sysconf.cc (get_open_max): New function.
	(get_page_size): Ditto.
	(get_nproc_values): Ditto.
	(get_avphys): Ditto.
	(sc_type): New type.
	(sca): New array to map _SC_xxx options to sysconf return values.
	(sysconf): Reimplement using sca array.
	* include/limits.h: Add all missing values as defined by SUSv3.
	* include/pthread.h (PTHREAD_DESTRUCTOR_ITERATIONS): Move definition
	to sys/limits.h.
	(PTHREAD_KEYS_MAX): Ditto.
	* include/semaphore.h (SEM_VALUE_MAX): Ditto.
	* include/cygwin/stdlib.h (posix_memalign): Declare.
	* include/cygwin/version.h: Bump API minor number.
	* include/sys/mman.h: Add posix_madvise flags.
	(posix_madvise): Declare.
	* include/sys/termios.h (_POSIX_VDISABLE): Move definition to
	sys/limits.h.
This commit is contained in:
Corinna Vinschen
2007-02-07 17:22:40 +00:00
parent 0e37a2e6e5
commit 59e3b6ca7d
14 changed files with 563 additions and 179 deletions

View File

@@ -1,7 +1,7 @@
/* malloc_wrapper.cc
Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
Red Hat, Inc.
Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
2006, 2007 Red Hat, Inc.
Originally written by Steve Chamberlain of Cygnus Support
sac@cygnus.com
@@ -70,6 +70,8 @@ malloc (size_t size)
__malloc_unlock ();
}
malloc_printf ("(%d) = %x, called by %p", size, res, __builtin_return_address (0));
if (!res)
set_errno (ENOMEM);
return res;
}
@@ -86,6 +88,8 @@ realloc (void *p, size_t size)
__malloc_unlock ();
}
malloc_printf ("(%x, %d) = %x, called by %x", p, size, res, __builtin_return_address (0));
if (!res)
set_errno (ENOMEM);
return res;
}
@@ -102,9 +106,29 @@ calloc (size_t nmemb, size_t size)
__malloc_unlock ();
}
malloc_printf ("(%d, %d) = %x, called by %x", nmemb, size, res, __builtin_return_address (0));
if (!res)
set_errno (ENOMEM);
return res;
}
extern "C" int
posix_memalign (void **memptr, size_t alignment, size_t bytes)
{
void *res;
if (!use_internal_malloc)
return ENOSYS;
if ((alignment & (alignment - 1)) != 0)
return EINVAL;
__malloc_lock ();
res = dlmemalign (alignment, bytes);
__malloc_unlock ();
if (!res)
return ENOMEM;
if (memptr)
*memptr = res;
return 0;
}
extern "C" void *
memalign (size_t alignment, size_t bytes)
{
@@ -119,6 +143,8 @@ memalign (size_t alignment, size_t bytes)
__malloc_lock ();
res = dlmemalign (alignment, bytes);
__malloc_unlock ();
if (!res)
set_errno (ENOMEM);
}
return res;
@@ -138,6 +164,8 @@ valloc (size_t bytes)
__malloc_lock ();
res = dlvalloc (bytes);
__malloc_unlock ();
if (!res)
set_errno (ENOMEM);
}
return res;