124 Commits

Author SHA1 Message Date
jb
8d80497304 Delete the XXX comments that refer to spinlock recursion. The malloc/free/
realloc functions check for recursion within the malloc code itself. In
a thread-safe library, the single spinlock ensures that no two threads
go inside the protected code at the same time. The thread implementation
is responsible for ensuring that the spinlock does in fact protect malloc.
There was a window of opportunity in which this was not the case. I'll fix
that with a commit RSN.
1998-09-30 06:13:59 +00:00
dfr
7fdf235da0 Use 8k pagesize on alpha, not 4k. 1998-09-23 21:26:04 +00:00
alex
6afe7a9f53 Back out part of previous commit (even though it's technically correct).
Our spinlock implementation allows a particular thread to obtain a lock
multiple times, but release the lock with a single unlock call.  Since
we're detecting recursion, we know the lock is already owned by the
current thread in a previous call and must not be released in the
current call.  This is really far too dependent on this particular
spinlock implementation, so I've added commented out calls to
THREAD_UNLOCK in the appropriate places.  We can activate this code when
spinlock is taught to count each lock operation.
1998-09-20 01:07:50 +00:00
alex
2945cc62f8 Correctly back out of free if a recursive call into malloc.c is detected.
Set malloc_func *after* grabbing the thread lock.

Noticed by:	Simon Coggins <simon@oz.org>
1998-09-19 20:55:36 +00:00
imp
bfe73fd683 Replace memory leaking instances of realloc with non-leaking reallocf.
In some cases replace if (a == null) a = malloc(x); else a =
realloc(a, x); with simple reallocf(a, x).  Per ANSI-C, this is
guaranteed to be the same thing.

I've been running these on my system here w/o ill effects for some
time.  However, the CTM-express is at part 6 of 34 for the CAM
changes, so I've not been able to do a build world with the CAM in the
tree with these changes.  Shouldn't impact anything, but...
1998-09-16 04:17:47 +00:00
imp
5c7c8dfbe2 o Don't reference non-existant function freealloc.
o Properly order things

Pointed out by: bde
1998-09-16 04:07:31 +00:00
imp
f706ca01b7 Fix style problems noted by Bruce:
o No copyright on reallocf.
	o Order makefile list correctly.
	o indent reallocf properly.
1998-09-16 03:16:06 +00:00
imp
d54a12dd1f Add reallocf to the library. This function is simliar to realloc, but
when it returns NULL to indicate failure, it will also free the memory
that was passed to it, if that was non-null.

This does not change the semantics of realloc.

A second commit will be done to commit the conversion of those places in
the code that can safely use this to avoid memory leaks when confronted
with low memory situations.

Beaten-to-death-but-finally-approved-in: -current
1998-09-14 20:34:34 +00:00
peter
03956e03bf preserve errno across the readlink() calls. There is no value in trashing
errno during a successful malloc() call.
1998-06-18 09:13:16 +00:00
jb
439aa43648 Add support for thread lock debug. No impact of the malloc code. 1998-06-09 08:30:32 +00:00
jb
1baebded07 This is a hack to workaround source that is coded to use long variables
but also assumes that they are 32-bits. This is one place where I don't
think it is appropriate to change 'long' to 'int'. I don't see why the
code couldn't be fixed so that using natural long variables does the
right thing. It's spaggetti code so it'll take some effort. Obviously
NetBSD thought so too because they change 'long' to 'int32_t' etc
and left it at that. As a temporary measure FreeBSD/Alpha can use the
NetBSD code and put this on the list of things to fix.
1998-05-08 05:41:57 +00:00
rnordier
f35a3f07ec Fix a few nits in quoted code fragments and elsewhere. 1998-05-04 23:16:50 +00:00
jb
f1fb79481d Replace the threaded locking with spinlock calls for both threaded
and non-threaded programs. This makes malloc thread safe for linking
with libpthread and kernel threads.

Reviewed by: phk
1998-04-29 09:10:58 +00:00
jb
0d8f4028af Reference an external variable in threaded programs so that the
autoinitialiser gets linked in and therefore called before main().
1998-04-29 09:08:43 +00:00
jb
44b61e0100 Use signal() in both the threaded and non-threaded cases. 1998-04-29 09:06:13 +00:00
dima
f475e872ad indent 1998-04-20 22:13:50 +00:00
phk
525c97c21d Remove a nolonger implented "BUGS" description.
PR:		6240
Reviewed by:	phk
Submitted by:	Niall Smart rotel@indigo.ie
1998-04-11 07:37:44 +00:00
jb
4c358b50ec Add a global variable called __isthreaded that can be tested throughout
libc to determine if locking is required. This is needed in libc
for use with kernel threads, but until a thread is created, we don't
really want to bother locking things. The variable was added here
because the crt code calls exit(main()) so all programs will get the
variable.
1998-04-11 07:02:58 +00:00
jb
43c2287620 Change in name of the static initializer define. 1998-04-04 11:03:07 +00:00
charnier
79fc0e5555 .Sh AUTHOR -> .Sh AUTHORS. Use .An/.Aq 1998-03-19 07:34:22 +00:00
jb
1b6316f0e7 NetBSD doesn't have a utrace syscall, so don't define that if
__NETBSD_SYSCALLS is defined.
1998-03-09 07:00:38 +00:00
jb
7bfcc9edbb Change MACHINE references to MACHINE_ARCH. 1998-02-20 08:41:46 +00:00
alex
eac766f136 Drop the use of caddr_t in conjunction with mmap(2). 1997-12-31 03:15:06 +00:00
jb
da6ab2349a Fix recursion problem which occurs when a signal is received during
a malloc. The signal handler creates a thread which requires a malloc...
For now, the only thing to do is to block signals. When we move user
pthreads to use the kernel threads, mutexes will be implemented in kernel
space and then malloc can revert.
1997-12-15 02:12:42 +00:00
bde
ea35ce8d73 Sorted lists. 1997-10-21 08:41:15 +00:00
bde
d1bc3e7989 Handle machine-dependent (stdlib) sources more automatically.
This fixes bugs in the manual handling.  abs.[cS] was handled too
specially and the wrong (.c) variant for each of div.[cS], labs.[cS]
and ldiv.[cS] was added to SRCS.  This caused the .c variant to be
used if `depend' was made and the .S version to be used otherwise.
1997-10-16 14:58:30 +00:00
bde
ef5c98dd45 Removed the subdirectory paths from the definitions of MAN[1-9]. They
were a workaround for limitations in bsd.man.mk that were fixed about
2 years ago.
1997-10-15 16:16:41 +00:00
charnier
1754071cd4 environmental -> environment. 1997-09-18 06:55:21 +00:00
phk
6152eccaa4 Another 32bits of 64bits conformance.
Reviewed by:	phk
Submitted by:	jdp
1997-08-31 05:59:39 +00:00
phk
cb8d9886a9 Improvement of type independency for the bitmap.
This makes 64bit operation more likely.

Reviewed by:	phk
Submitted by:	jdp
1997-08-27 12:04:33 +00:00
phk
f276c66ddf Malloc option H is now default. 1997-08-27 06:40:34 +00:00
steve
fc8b5b4955 Get rid of integer overflow warning.
PR:		misc/3575
Submitted by:	Bruce Evans <bde@zeta.org.au>
1997-08-23 23:51:12 +00:00
jdp
81e43f0b38 Fix a minor typo. It only affects the sparc version. 1997-07-26 03:43:14 +00:00
phk
1483aecd5e realpath() should break on looped symlinks.
PR:		3911
Reviewed by:	phk
Submitted by:	Shigio Yamaguchi <shigio@wafu.netgate.net>
1997-07-16 11:25:48 +00:00
peter
486333fcfd kill the undead 1997-07-13 14:26:00 +00:00
bde
c800b77e17 This commit was generated by cvs2svn to compensate for changes in r27180,
which included commits to RCS files with non-trunk default branches.
1997-07-03 03:28:27 +00:00
bde
e2f0a0f35c Import Lite2's src/lib, except for non-i386 machine-dependent directories,
libc/db, libc/gen/crypt.* and libtelnet.  All affected files except 3
unimportant ones have already left the vendor branch.
1997-07-03 03:28:27 +00:00
phk
73643318c3 Have another go at the malloc-sysv initialization.
PR:		4002
Pointed out by:	bde
1997-07-02 19:33:23 +00:00
phk
a4c2098502 malloc_sysv used before initialized, reported in PR4002 by
Dmitrij Tejblum <dima@tejblum.dnttm.rssi.ru>

Various cleanup from Keith Bostic

Reinstate calloc() as a separate funtion, in its own source/object file.
leave the manpage integrated with malloc.3 and friends.  Too many things
were broken in this respect.

PR:		4002
Reviewed by:	phk
Submitted by:	Dmitrij Tejblum <dima@tejblum.dnttm.rssi.ru>
Submitted by:	Keith Bostic <bostic@bostic.com>
1997-07-01 18:39:38 +00:00
steve
7a5541cde7 Show the real revision date and not the date that this
manpage is being viewed.
1997-06-23 04:03:49 +00:00
phk
e682320b6b Integrate calloc with the rest of the gang.
Various portability and stylistic cleanups.
Kill MALLOC_STATS & the 'D' option.
Fix the 'V' option.
Major overhaul of the man-page.
You milage should not vary.

Reviewed by:	Keith Bostic <bostic@bostic.com>
Submitted by:	Keith Bostic <bostic@bostic.com>
1997-06-22 17:54:27 +00:00
ache
898607164b srandomdev: use stack junk value in the fallback code too 1997-06-15 18:23:19 +00:00
ache
98ddc15c28 Instead of copying fallback code over and over in each program,
implement (better) falback code inside srandomdev() itself.
Change return type from int to void (binary compatibility surprisely
achieved). Userland code will be changed soon.
1997-06-14 00:14:29 +00:00
phk
88464dd9dc Add yet an option, this time on how to deal with malloc(0) and realloc(ptr.0)
Prompted by:	X11 & XFree86
1997-06-12 12:45:45 +00:00
jb
5158253c97 Fix mutex initialization.
Malloc cannot use pthread_mutex_init() to initialize a mutex because
the mutex initialization process does a malloc!

libc_r internals skip the malloc and assign an initializer to a static
structure and point the opaque type (pthread_mutex_t in this case) to
that structure. This is done on the assumption that the mutex will never
be destroyed. This style of initialization is only valid inside libc_r
because the structure that is assigned is opaque to the user.

This fix allows a simple program to get to main() again. 8-)
1997-06-04 12:55:49 +00:00
phk
51cf1d5bbc Malloc flag X makes malloc behave like the canonical xmalloc() wrapper.
Untested support for Solaris from John-Mark Gurney

Reviewed by:	phk
Submitted by:	(partially) John-Mark Gurney <gurney_j@resnet.uoregon.edu>
1997-05-30 20:39:32 +00:00
jb
a1337bb0ae Changed all paths to be relative to src/lib instead of src/lib/libc
so that all these makefiles can be used to build libc_r too.

Added .if ${LIB} == "c" tests to restrict man page builds to libc
to avoid needlessly building them with libc_r too.

Split libc Makefile into Makefile and Makefile.inc to allow the
libc_r Makefile to include Makefile.inc too.
1997-05-03 03:50:06 +00:00
max
bf45fa98fc Typo.
PR:		#3178
Submitted by:	Josh Gilliam <soil@quick.net>
1997-04-25 20:36:10 +00:00
bde
4d078cb8d9 Fixed #include and/or prototype bugs in synopsis. 1997-04-19 15:57:20 +00:00
bde
d6e9aa93dc Fixed missing consts in synopsis. 1997-04-13 13:37:56 +00:00