Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'winsup/cygwin/dlmalloc.c')
-rw-r--r--winsup/cygwin/dlmalloc.c204
1 files changed, 204 insertions, 0 deletions
diff --git a/winsup/cygwin/dlmalloc.c b/winsup/cygwin/dlmalloc.c
index a5a7ff008..a79a72513 100644
--- a/winsup/cygwin/dlmalloc.c
+++ b/winsup/cygwin/dlmalloc.c
@@ -28,6 +28,210 @@
* malloc_usable_size(P) is equivalent to realloc(P, malloc_usable_size(P))
*
* $Log$
+ * Revision 1.7 2003/09/25 00:37:16 cgf
+ * * devices.cc: New file.
+ * * devices.gperf: New file.
+ * * devices.shilka: New file.
+ * * cygwin-gperf: New file.
+ * * cygwin-shilka: New file.
+ * * fhandler_fifo.cc: New file.
+ * * fhandler_nodevice.cc : New file. Reorganize headers so that path.h precedes
+ * fhandler.h throughout. Remove device argument and unit arguments from fhandler
+ * constructors throughout. Remove pc arguments to fhandler functions and use
+ * internal pc element instead, throughout. Use dev element in pc throughout.
+ * Use major/minor elements rather than units and device numbers previously in
+ * fhandler class. Use correct methods for fhandler file names rather than
+ * directly accessing file name variables, throughout.
+ * * Makefile.in (DLL_OFILES): Add devices.o, fhandler_fifo.o
+ * * dcrt0.cc (dll_crt0_1): Call device::init.
+ * * devices.h: Renumber devices based on more Linux-like major/minor numbers.
+ * Add more devices. Declare standard device storage.
+ * (device): Declare struct.
+ * * dir.cc (opendir): Use new 'build_fh_name' to construct a fhandler_* type.
+ * * dtable.cc (dtable::get_debugger_info): Ditto.
+ * (cygwin_attach_handle_to_fd): Ditto.
+ * (dtable::release): Remove special FH_SOCKET case in favor of generic
+ * "need_fixup_before" test.
+ * (dtable::init_std_file_from_handle): Use either build_fh_dev or build_fh_name
+ * to build standard fhandler.
+ * (dtable::build_fh_name): Renamed from dtable::build_fhandler_from_name. Move
+ * out of dtable class. Don't accept a path_conv argument. Just build it here
+ * and pass it to:
+ * (build_fh_pc): Renamed from dtable::build_fhandler. Move out of dtable class.
+ * Use intrinsic device type in path_conv to create new fhandler.
+ * (build_fh_dev): Renamed from dtable::build_fhandler. Move out of dtable class.
+ * Simplify arguments to just take new 'device' type and a name. Just return
+ * pointer to fhandler rather than trying to insert into dtable.
+ * (dtable::dup_worker): Accommodate above build_fh name changes.
+ * (dtable::find_fifo): New (currently broken) function.
+ * (handle_to_fn): Use strechr for efficiency.
+ * * dtable.h: Reflect above build_fh name changes and argument differences.
+ * (fhandler_base *&operator []): Return self rather than copy of self.
+ * * fhandler.cc (fhandler_base::operator =): Use pc element to set normalized
+ * path.
+ * (fhandler_base::set_name): Ditto.
+ * (fhandler_base::raw_read): Use method to access name.
+ * (fhandler_base::write): Correctly use get_output_handle rather than get_handle.
+ * (handler_base::device_access_denied): New function.
+ * (fhandler_base::open): Eliminate pc argument and use pc element of
+ * fhandler_base throughout.
+ * (fhandler_base::fstat): Detect if device is based in filesystem and use
+ * fstat_fs to calculate stat, if so.
+ * (fhandler_base::fhandler_base): Eliminate handling of file names and, instead,
+ * just free appropriate component from pc.
+ * (fhandler_base::opendir): Remove path_conv parameter.
+ * * fhandler.h: Remove all device flags.
+ * (fhandler_base::pc): New element.
+ * (fhandler_base::set_name): Change argument to path_conv.
+ * (fhandler_base::error): New function.
+ * (fhandler_base::exists): New function.
+ * (fhandler_base::pc_binmode): New function.
+ * (fhandler_base::dev): New function.
+ * (fhandler_base::open_fs): New function.
+ * (fhandler_base::fstat_fs): New function.
+ * (fhandler_base::fstat_by_name): New function.
+ * (fhandler_base::fstat_by_handle): New function.
+ * (fhandler_base::isfifo): New function.
+ * (fhandler_base::is_slow): New function.
+ * (fhandler_base::is_auto_device): New function.
+ * (fhandler_base::is_fs_special): New function.
+ * (fhandler_base::device_access_denied): New function.
+ * (fhandler_base::operator DWORD&): New operator.
+ * (fhandler_base::get_name): Return normalized path from pc.
+ * (fhandler_base::get_win32_name): Return windows path from pc.
+ * (fhandler_base::isdevice): Renamed from is_device.
+ * (fhandler_base::get_native_name): Return device format.
+ * (fhandler_fifo): New class.
+ * (fhandler_nodevice): New class.
+ * (select_stuff::device_specific): Remove array.
+ * (select_stuff::device_specific_pipe): New class element.
+ * (select_stuff::device_specific_socket): New class element.
+ * (select_stuff::device_specific_serial): New class element.
+ * (select_stuff::select_stuff): Initialize new elements.
+ * * fhandler_disk_file.cc (fhandler_base::fstat_by_handle): Move to base class
+ * from fhandler_disk_file.
+ * (fhandler_base::fstat_by_name): Ditto.
+ * (fhandler_base::fstat_by_name): Ditto.
+ * (fhandler_disk_file::open): Move most functionality into
+ * fhandler_base::open_fs.
+ * (fhandler_base::open_fs): New function.
+ * (fhandler_disk_file::close): Move most functionality into
+ * fhandler_base::close_fs.
+ * (fhandler_base::close_fs): New function.
+ * * fhandler_mem.cc (fhandler_dev_mem::open): Use device name in debugging
+ * output.
+ * * fhandler_socket.cc (fhandler_socket::set_connect_secret): Copy standard
+ * urandom device into appropriate place.
+ * (fhandler_socket::accept): Reflect change in fdsock return value.
+ * * fhandler_tty.cc: See "throughouts" above.
+ * * net.cc: Accommodate fdsock change throughout.
+ * (fdsock): Return success or failure, accept fd argument and device argument.
+ * * path.cc (symlink_info::major): New element.
+ * (symlink_info::minor): New element.
+ * (symlink_info::parse_device): Declare new function.
+ * (fs_info::update): Accommodate changes in path_conv class.
+ * (path_conv::fillin): Ditto.
+ * (path_conv::return_and_clear_normalized_path): Eliminate.
+ * (path_conv::set_normalized_path): New function.
+ * (path_conv::path_conv): Set info in dev element. Use path_conv methods Check
+ * for FH_FS rather than FH_BAD to indicate when to fill in filesystem stuff.
+ * where appropriate rather than direct access. Use set_normalized_path to set
+ * normalized path.
+ * (windows_device_names): Eliminate.
+ * (get_dev): Ditto.
+ * (get_raw_device_number): Ditto.
+ * (get_device_number): Ditto.
+ * (win32_device_name): Call new device name parser to do most of the heavy
+ * lifting.
+ * (mount_info::conv_to_win32_path): Fill in dev field as appropriate.
+ * (symlink_worker): Handle new device files.
+ * (symlink_info::check): Ditto.
+ * (symlink_info::parse_device): Define new function.
+ * * path.h (executable_states): Move here from fhandler.h.
+ * (fs_info): Rename variables to *_storage and create methods for accessing same.
+ * (path_conv): Add dev element, remove devn and unit and adjust inline methods to
+ * accommodate.
+ * (set_normalized_path): Declare new function.
+ * * pinfo.cc (_pinfo::commune_recv): Add broken support for handling fifos.
+ * (_pinfo::commune_send): Ditto.
+ * * pipe.cc (fhandler_pipe::close): check for existence of handle before closing
+ * it.
+ * (handler_pipe::create): Rename from make_pipe. Change arguments to accept
+ * fhandler_pipe array. Accommodate fifos.
+ * (pipe): Rework to deal with fhandler_pipe::create changes.
+ * (_pipe): Ditto.
+ * * select.cc: Use individual device_specific types throughout rather than
+ * indexing with obsolete device number.
+ * (set_bits): Use is_socket call rather than checking device number.
+ * * shared_info.h (CURR_MOUNT_MAGIC): Update.
+ * (conv_to_win32_path): Reflect addition of device argument.
+ * * syscalls.cc (mknod_worker): New function.
+ * (open): Use build_fh_name to build fhandler.
+ * (chown_worker): Detect if this is an 'auto' device rather than an on-filesystem
+ * device and handle appropriately.
+ * (chmod_device): New function.
+ * (chmod): Detect if this is an 'auto' device rather than an on-filesystem device
+ * and handle appropriately. Use chmod_device to set mode of in-filesystem
+ * devices.
+ * (stat_worker): Eliminate path_conv argument. Call build_fh_name to construct
+ * fhandler. Use fh->error() rather than pc->error to detect errors in fhandler
+ * construction.
+ * (access_worker): New function pulled from access. Accommodate in-filesystem
+ * devices.
+ * (access): Use access_worker.
+ * (fpathconf): Detect if this is an 'auto' device rather than an on-filesystem
+ * device and handle appropriately.
+ * (mknod_worker): New function.
+ * (mknod32): New function.
+ * (chroot): Free normalized path -- assuming it was actually cmalloced.
+ * * tty.cc (create_tty_master): Tweak for new device class.
+ * (tty::common_init): Ditto.
+ * * winsup.h (stat_worker): Remove.
+ * (symlink_worker): Declare.
+ * * exceptions.cc (set_process_mask): Just call sig_dispatch_pending and don't
+ * worry about pending_signals since sig_dispatch_pending should always do the
+ * right thing now.
+ * (sig_handle): Reorganize SIGCONT handling to more closely conform to SUSv3.
+ * * pinfo.h: Move __SIG enum to sigproc.h.
+ * (PICOM_FIFO): New enum element.
+ * (_pinfo): Remove 'thread2signal' stuff throughout class.
+ * (_pinfo::commune_send): Make varargs.
+ * (_pinfo::sigtodo): Eliminate.
+ * (_pinfo::thread2signal): Ditto.
+ * * signal.cc (kill_worker): Eliminate call to setthread2signal.
+ * * sigproc.cc (local_sigtodo): Eliminate.
+ * (getlocal_sigtodo): Ditto.
+ * (sigelem): New class.
+ * (pending_signals): New class.
+ * (sigqueue): New variable, start of sigqueue linked list.
+ * (sigcatch_nonmain): Eliminate.
+ * (sigcatch_main): Eliminate.
+ * (sigcatch_nosync): Eliminate.
+ * (sigcomplete_nonmain): Eliminate.
+ * (pending_signals): Eliminate.
+ * (sig_clear): Call signal thread to clear pending signals, unless already in
+ * signal thread.
+ * (sigpending): Call signal thread to get pending signals.
+ * (sig_dispatch_pending): Eliminate use of pending_signals and just check
+ * sigqueue.
+ * (sigproc_terminate): Eliminate all of the obsolete semaphore stuff. Close
+ * signal pipe handle.
+ * (sig_send): Eliminate all of the obsolete semaphore stuff and use pipe to send
+ * signals.
+ * (getevent): Eliminate.
+ * (pending_signals::add): New function.
+ * (pending_signals::del): New function.
+ * (pending_signals::next): New function.
+ * (wait_sig): Eliminate all of the obsolete semaphore stuff. Use pipe to
+ * communicate and maintain a linked list of signals.
+ * * sigproc.h: Move __SIG defines here. Add __SIGPENDING.
+ * (sig_dispatch_pending): Remove "C" specifier.
+ * (sig_handle): Accept a mask argument.
+ * * thread.cc: Remove signal handling considerations throughout.
+ *
+ * Revision 1.5.52.1 2003/09/02 02:31:08 cgf
+ * merge from trunk
+ *
* Revision 1.6 2003/08/31 18:26:58 cgf
* * Makefile.in (MALLOC_OFILES): Always fill in with correct malloc object.
* * configure.in: Fill in MALLOC_OFILES with either debugging or regular malloc.