Commit Graph

64 Commits

Author SHA1 Message Date
Christopher Faylor 029d147e94 * Makefile.in: Use -static-libgcc when creating cygserver.exe. 2008-10-30 13:17:42 +00:00
Corinna Vinschen cce741c409 * sysv_msg.cc: Add fix from upstream version 1.65.
(msgsnd): Call msleep with timeout value.  Handle EWOULDBLOCK.  Make
	sure it's clear from where msleep has been called in debug output.
	(msgrcv): Make sure it's clear from where msleep has been called in
	debug output.
2008-04-30 19:09:40 +00:00
Corinna Vinschen 62688407cb * bsd_helper.cc: Replace %E __small_printf format specifier with %lu
and call to GetLastError throughout.
	* bsd_mutex.cc: Ditto.
	* sysv_sem.cc (semget): Replace %X __small_printf format specifier
	with %llx.
2008-02-06 22:30:38 +00:00
Corinna Vinschen fb7331e34c Remove dependency from Cygwin internal code.
* Makefile.in (CYGWIN_OBJS): Remove smallprint.o.
	(cygserver.exe): Remove strfuncs.o
	(strfuncs.o): Drop rule.
	* bsd_log.cc (_vlog): Use snprintf/vsnprintf instead of
	__small_sprintf/__small_vsprintf.
	* sysv_sem.cc (seminit): Use sys_malloc instead of malloc.  Use
	snprintf instead of __small_sprintf.
	(semunload): Free the above allocated sema_mtx names here.
2008-02-06 22:01:30 +00:00
Corinna Vinschen 5556c6209f * Makefile.in: Don't link strfuncs.o from the Cygwin build dir.
Build it again with __OUTSIDE_CYGWIN__ defined.
2008-02-04 12:02:26 +00:00
Corinna Vinschen 8f14a11301 * bsd_helper.cc (tunable_params): Add kern.ipc.shm_allow_removed as
bool parameter.
	* cygserver.conf: Add a description for the kern.ipc.shm_allow_removed
	parameter.
	* sysv_shm.cc (shminit): Set shm_allow_removed variable according to
	kern.ipc.shm_allow_removed setting.
2007-11-05 15:45:52 +00:00
Corinna Vinschen 64a62f4cfe * smallprint.c: Remove. 2007-08-02 14:38:21 +00:00
Christopher Faylor de16566998 * Makefile.in: Add -lntdll to link line.
(CYGWIN_OBJS): Include strfuncs.o.
2007-08-02 14:23:22 +00:00
Corinna Vinschen dcd1ef4516 * smallprint.c: New file.
* Makefile.in (OBJS): Add smallprint.o.
	(CYGWIN_OBJS): Remove smallprint.o from Cygwin dir.
2007-08-02 14:07:19 +00:00
Corinna Vinschen 238291e14f * bsd_helper.cc: Drop unnecessary security.h include. 2007-07-21 07:43:24 +00:00
Corinna Vinschen 7131554a69 Throughout remove using wincap.
* Makefile.in (OBJS): Remove wincap.o.
	* README: Don't mention 9x.
	* bsd_mutex.cc (_mtx_unlock): Drop checking for 9x error codes.
	* cygserver.cc (server_submission_loop::request_loop): Add FIXME
	comment.
	* wincap.cc: Remove.
	* wincap.h: Remove.
	* woutsup.h: Don't include wincap.h.
2007-02-23 11:43:48 +00:00
Corinna Vinschen 3fbf471f35 * Makefile.in (OBJS): Drop transport_sockets.o.
* sysv_shm.cc (shmget_allocate_segment): Remove spurious cast.
	* transport.cc: Don't include transport_sockets.h.
	(create_server_transport): Always create transport_layer_pipes.
	* transport_sockets.cc: Remove.
	* transport_sockets.h: Remove.
2007-02-22 10:50:51 +00:00
Christopher Faylor 99fc5e10f3 update to newer autoconf 2006-05-24 16:59:03 +00:00
Corinna Vinschen f68671330f * wincap.cc: New file.
* wincap.h: New file.
	* Makefile.in: Accomodate having our own wincap implementation now.
2006-01-12 16:59:15 +00:00
Corinna Vinschen e3786825c0 Check FreeBSD upstream changes and apply important patches.
* sysv_sem.cc (__semctl): Check copyin return value (from 1.76).
	* sysv_shm.cc (shminit): Actually use the iterating variable in the
	for loop when trying to avoid overflow (from 1.102).
2006-01-09 15:10:14 +00:00
Corinna Vinschen 2d015bd67c * bsd_helper.cc (securityinit): New function. Move initialization
of security related variables from ipcinit here.
	* bsd_helper.h (securityinit): Add prototype.
	* cygserver.cc (main): Call securityinit right after wincap.init.

	* process.cc (process_cache::process): Fix maximum process condition.

	* README: Add description for new -p/--process-cache option.
	* bsd_helper.cc (default_tun_check): Add kern.srv.process_cache_size
	entry to tunable_params. Set max value of kern.srv.request_threads
	to 310.
	* cygserver.cc (SERVER_VERSION): Set to 1.20.
	(print_usage): Print usage of new parameter -p.
	(main): Add process cache parameter handling. Accomodate new max
	value of request threads.
	* cygserver.conf: Add kern.srv.process_cache_size tunable parameter.
	Accomodate new max value of kern.srv.request_threads.
	* process.cc: Fix a comment.
	(process_cache::process_cache): Add max process cache size parameter.
	Change _cache_add_trigger to manual reset event.
	(struct pcache_wait_t): New struct used as parameter to
	pcache_wait_thread.
	(pcache_wait_thread): New thread function used for threaded process
	cache.
	(process_cache::wait_for_processes): Use threaded waiting if number
	of processes to wait for is bigger than 62. Always check all processes
	to avoid race under heavy load.
	(process_cache::sync_wait_array): Remove useless assert. Reset
	_cache_add_trigger right at the start since it's manual reset now.
	Accomodate threaded waiting.
	* process.h (process_cache::process_cache): Add max_procs parameter.
	(process_cache::_max_process_count): New member.
	(process_cache::_wait_array: Raise to allow up to 5 wait threads.
	(process_cache::_process_array): Ditto.
2005-11-10 15:04:06 +00:00
Corinna Vinschen 8032f81502 * bsd_log.cc (_vpanic): LOG_EMERG is overkill, use LOG_CRIT. 2005-11-10 10:50:46 +00:00
Christopher Faylor c9508cb4ec * cygserver.cc (main): Call wincap.init() earlier to avoid a NULL dereference. 2005-08-08 19:46:48 +00:00
Corinna Vinschen 435227352b * sysv_sem.cc (semu_list): Define static to avoid gcc 4.x compiler
warning.
2005-06-14 12:22:14 +00:00
Christopher Faylor eb83d89572 whitespace changes to hopefully force snapshot run. 2005-06-10 18:44:26 +00:00
Corinna Vinschen c400419414 * bsd_mutex.cc (msleep_cnt): Remove.
(msleep_max_cnt): Remove.
	(msleep_arr): Remove.
	(class msleep_sync_array): New class to encapsulate msleep/wakeup
	thread synchronization.
	(msleep_sync): New object pointer.
	(msleep_init): Initialize new msleep_sync object.
	(_mutex): Just call msleep_sync->enter() and msleep_sync->leave() for
	thread synchronization. Improve debug output a bit more.
	(wakeup): Just call msleep_sync->wakeup().
	(wakeup_all): Whitespace fix.
2005-04-08 20:31:43 +00:00
Corinna Vinschen dafef5e249 * bsd_helper.cc (ipcexit_hookthread): Fix whitespace and handle leak.
* bsd_mutex.cc: Include stdlib.h, sys/msg.h and sys/sem.h.
	(mtx_init): Initialize lock counter to 0.
	(_mtx_lock): Increment and log mutex lock counter.
	(mtx_owned): Add winpid argument. Return true only if mutex is
	actually owned by process winpid.
	(_mtx_assert): Add winpid argument accordingly.
	(_mtx_unlock): Log owner and lock count.
	(MSLEEP_MUTEX): Remove.
	(MSLEEP_SEM): Ditto.
	(MSLEEP_EVENT): Ditto.
	(msleep_event_name): Ditto.
	(msleep_cs): New global critical section.
	(msleep_cnt): New global variable indicating msleep record usage.
	(msleep_max_cnt): New global variable indicating msleep record size.
	(msleep_arr): New global pointer to msleep records.
	(msleep_init): Initialize msleep_cs. Allocate msleep_arr array.
	(_msleep): Rewrite using new msleep_cs/msleep_arr based thread
	synchronization. Don't be shy with debug output.
	(wakeup): Rewrite using new msleep_cs/msleep_arr based thread
	synchronization.
	* bsd_mutex.h (struct mtx): Add lock counter for better debugging.
	(mtx_owned): Declare with winpid argument.
	(_mtx_assert): Ditto.
	(mtx_assert): Define with winpid argument.
	* cygserver.cc (version): Remove.
	(SERVER_VERSION): New define, decoupling server version information
	from source code control system.
	(print_version): Simplify printing server version.
	* process.cc (process::process): Fix wrong bracketing (and handle leak).
	(process::~process): Only try to close _signal_arrived if valid.
	* sysv_sem.cc: Include sys/smallprint.h.
	(semundo_clear): Define with additional struct thread pointer argument.
	Accomodate throughout.
	(SEMUNDO_LOCKASSERT): Define with winpid argument. Accomodate
	throughout.
	(struct sem_undo): Define un_proc as pid_t on Cygwin. Accomodate
	throughout.
	(seminit): Improve debugging by adding the semid to the mutex name.
	(semget): Correctly print key value as 64 bit hex value in debug
	output.
	(semexit_myhook): Remove Cygwin specific unlocking of mutexes owned
	by exiting process.  Keep semaphore global lock throughout whole
	function to avoid races.
	* sysv_shm.cc (GIANT_REQUIRED): Define empty on Cygwin. We know that
	Giant is locked.
2005-04-06 11:11:07 +00:00
Corinna Vinschen c9f545e20f * bsd_mutex.cc (_msleep): Whitespace fix.
* process.cc (process::process): Handle invalid signal_arrived values
	more gracefully.
2005-04-01 15:35:47 +00:00
Corinna Vinschen f312634c02 * bsd_mutex.cc: Include limits.h.
(MSLEEP_MUTEX): New define for third parameter to msleep_event_name.
	(MSLEEP_SEM): Ditto.
	(MSLEEP_EVENT): Ditto.
	(msleep_event_name): Add third parameter to allow multiple
	synchronization objects per ident.
	(_msleep): Implement new synchronization technique to make sure
	that all threads have been woken up by a corresponding wakeup call.
	(wakeup): Ditto.
2004-12-30 15:58:27 +00:00
Corinna Vinschen 52fa622ab6 * sysv_sem.cc: Redefine offsetof to circumvent build problems with
gcc 3.4.
2004-10-18 14:26:18 +00:00
Corinna Vinschen 1f8b30497d * bsd_mutex.cc (_msleep): Simplify event creation. Revert change from
2004-08-24.  It should be unnecessary now.
	* msg.cc (client_request_msg::serve): Release process critical
	section as early as possible.
	* sem.cc (client_request_sem::serve): Ditto.
	* shm.cc (client_request_shm::serve): Ditto.
	* process.cc: Use hold and release method calls instead of
	EnterCriticalSection/LeaveCriticalSection calls throughout.
	* process.h (_hold): Rename from hold.  Take filename and linenumber
	parameter for logging.  Define matching hold macro.
	(release): Ditto.
2004-10-04 19:44:05 +00:00
Corinna Vinschen c6ef5fb7ec * sysv_sem.cc: Update to FreeBSD version 1.69.
1.68: Reduce the overhead of semop() by using the kernel stack
	instead of malloc'd memory to store the operations array if it
	is small enough to fit.
	1.69: Adjust the number of processes waiting on a semaphore properly
	if we're woken up in the middle of sleeping.
2004-10-01 11:18:10 +00:00
Corinna Vinschen e55ad3ece0 * sysv_shm.cc (kern_shmat): Avoid compiler warning. 2004-09-23 14:16:54 +00:00
Corinna Vinschen 04e9ee5f15 * sysv_shm.cc (vm_object_reference): remove Cygwin specific define.
(vm_map_find): Ditto.
	(vm_map_inherit): Ditto.
	(kern_shmat): On Cygwin, take shmaddr just as is.  Don't call vm
	system calls on Cygwin.  Add comment.
2004-09-21 14:40:24 +00:00
Corinna Vinschen 1dcd520bb8 Fix copyright throughout.
Eliminate use of _impure_ptr outside Cygwin.
	* bsd_helper.cc: Include errno.h instead of cygerrno.h.
	* bsd_mutex.cc : Ditto.
	* client.cc: Ditto.
	* cygserver.cc: Ditto.
	* process.cc: Don't build functions inside Cygwin.  Don't include
	cygerrno.h.  Don't set errno.
	* transport_pipes.cc (SET_ERRNO): New define.  Use througout.
	* transport_sockets.cc (SET_ERRNO): Ditto.
	(GET_ERRNO): Ditto.
2004-09-15 10:17:53 +00:00
Corinna Vinschen ab21f18c95 * bsd_mutex.cc (_msleep): Disable resetting event object for now. 2004-09-06 20:32:45 +00:00
Corinna Vinschen f0720ce7cb * sysv_shm.cc (kern_shmat): Add debug_printf's. 2004-08-31 10:47:27 +00:00
Corinna Vinschen 1532dd53a5 * bsd_mutex.cc (_msleep): Release process object while waiting. 2004-08-24 22:04:18 +00:00
Corinna Vinschen 8c97671600 * transport.cc (transport_layer_base::~transport_layer_base): Resurrect.
* transport.h (transport_layer_base::~transport_layer_base): Ditto.
2004-08-03 12:35:35 +00:00
Corinna Vinschen a918549275 * bsd_mutex.cc (_msleep): Reset event object and close it before
entering mutex.  Turn order of conditional for better readability.
2004-07-30 14:48:19 +00:00
Corinna Vinschen 3bf0227220 * cygserver.conf: Describe relation between shmmaxpgs and SHMMAX. 2004-07-26 09:31:07 +00:00
Corinna Vinschen 96e949deaa * bsd_helper.cc: Whitespace fixes.
* bsd_mutex.cc: Ditto.
2004-07-20 16:06:14 +00:00
Corinna Vinschen bb3be323ba * transport.cc (transport_layer_base::~transport_layer_base): Remove.
* transport.h (transport_layer_base::~transport_layer_base): Ditto.
2004-07-19 14:04:51 +00:00
Corinna Vinschen f8e58afb11 * bsd_mutex.cc (win_priority): Actually calculate p from priority. 2004-07-19 13:12:00 +00:00
Corinna Vinschen e9054f3f7f * shm.cc (shmget): Explicitely set td_retval[0] to -1 on error. 2004-06-03 19:49:54 +00:00
Corinna Vinschen d2714c5eda * sysv_shm.cc (shmget): Allow to retrieve shared memory segments
by shmid when IPC_KEY_IS_SHMID is set.
2004-03-30 15:21:18 +00:00
Corinna Vinschen ddb1a4c10a * sysv_sem.cc (semundo_adjust): Check for process id instead of
process struct pointer, which isn't fixed under Cygwin.
	(semexit_myhook): Ditto.  Adjust debug print statements to print
	Cygwin and Windows PIDs instead of process pointer under Cygwin.
2004-03-02 11:08:35 +00:00
Corinna Vinschen f5133f95b0 * bsd_mutex.cc (win_priority): Move to msleep helper function section.
(set_priority): Ditto. Fix formatting.
	(_msleep): Cleanup obj formatting.  Rearrange obj order.
2004-02-07 10:47:39 +00:00
Corinna Vinschen 373a036f7b * bsd_mutex.cc (_msleep): Handle PCATCH using signal_arrived event.
* client.cc: Include sigproc.h.
        * msg.cc (client_request_msg::serve): Accomodate third parameter to
        process::process.
        * sem.cc (client_request_sem::serve): Ditto.
        * shm.cc (client_request_shm::serve): Ditto.
        * process.cc (process::process): Duplicate signal_arrived into
        Cygserver process space.
        (process::~process): Close _signal_arrived handle.
        (process_cache::process): Add signal_arrived handling.
        * process.h (process::process): Add signal_arrived parameter.
        (process:signal_arrived): New read accessor.
        (process:_signal_arrived): New member.
        (process_cache::process): Add signal_arrived parameter.
2004-02-06 16:25:58 +00:00
Corinna Vinschen 8e7014383b * process.h (cleanup_routine::~cleanup_routine): Make pure virtual
function to avoid miscompilation with certain versions of gcc.
	* process.cc (cleanup_routine::~cleanup_routine): Remove.
2004-01-16 13:39:25 +00:00
Christopher Faylor 91301b852f * Makefile.in (CFLAGS, CXXFLAGS): Remove unneeded include.
(CYGWIN_LIB): Delete.
(cygserver.exe target): Add -L$(cygwin_build) to the link line to force linker
to use build tree version of the library.  Remove specific inclusion of
libcygwin.a from the link line.
2003-12-26 05:37:54 +00:00
Corinna Vinschen 11377ba668 * bsd_helper.cc (tunable_params): Add entries for kern.ipc.msgmnb and
kern.ipc.msgtql.  Raise max value for kern.ipc.msgseg to 65535.
	* cygserver.conf: Add kern.ipc.msgmnb and kern.ipc.msgtql.
	* sysv_msg.cc (msginit): Add TUNABLE_INT_FETCH call for
	kern.ipc.msgmnb and kern.ipc.msgtql.
2003-12-16 10:13:34 +00:00
Corinna Vinschen 1d88f8cea2 * cygserver.cc (main): Move call to ipcinit() up before installing
any threads.
	* sysv_sem.cc: Update to FreeBSD version 1.67.
	(seminit): Initialize semaphore sequence numbers to 0.
2003-11-26 22:29:35 +00:00
Corinna Vinschen a2acbfb14e * Makefile.in (CYGWIN_LIB): Variable pointing to libcygwin.a in
the parallel cygwin dir.
	(cygserver.exe): Depend on and link against $CYGWIN_LIB.
2003-11-26 20:05:09 +00:00
Christopher Faylor af284c9c3b * Makefile.in (CXXFLAGS): Remove duplicate options handled in Makefile.common. 2003-11-26 03:52:12 +00:00