Commit Graph

8346 Commits

Author SHA1 Message Date
fjoe
ab0bce9d34 Make msdosfs long filenames matching case insensitive again.
PR:		59765
Submitted by:	Ryuichiro Imura <imura@ryu16.org>
2003-12-08 08:32:20 +00:00
marcel
4b6eafd82f Simplify the contexts created by the kernel and remove the related
flags. We now create asynchronous contexts or syscall contexts only.
Syscall contexts differ from the minimal ABI dictated contexts by
having the scratch registers saved and restored because that's where
we keep the syscall arguments and syscall return values.
Since this change affects KSE, have it use kse_switchin(2) for the
"new" syscall context.
2003-12-07 20:47:33 +00:00
murray
93b87ff9b0 Add support for timeout: and attempts: resolver options.
Submitted by:	Paul Vixie <paul@vix.com> / ISC
MFC After:	1 week
2003-12-07 12:32:24 +00:00
tjr
11f17fd074 Split multibyte(3) into separate manual pages for each function.
Instead of just deleting it, turn the original page into a general
overview of the multibyte character conversion functions, somewhat
similar to stdio(3).
2003-12-07 06:33:52 +00:00
tjr
412df50614 Split the documentation for localeconv() off into a separate manual page. 2003-12-07 06:00:00 +00:00
tjr
9ef7fe6cd5 Fix prototype for getchar_unlocked(). 2003-12-07 05:12:51 +00:00
obrien
23ad917e96 Update with the 4.9 pam modules, and add pam_opieaccess.so to the mix.
Approved by:	re(scottl)
2003-12-07 03:02:27 +00:00
obrien
95a0e9c9d5 Update with the 4.9 pam modules, and add pam_opieaccess.so to the mix.
Approved by:	re(scottl)
2003-12-07 02:38:01 +00:00
obrien
8d932005f6 Update with the 4.9 libraries, and add libdevstat.so.2 libmp.so.3
libskey.so.2 libusbhid.so.0 libutil.so.3 libvgl.so.2 to the mix.

Approved by:	re(scottl)
2003-12-07 02:11:19 +00:00
peter
bf613741f0 Apply a second fix for stack alignment with libkse. This time, enter the
UTS with the stack correctly aligned.  Also, while here, use an indirect
jump rather than the pushq/ret hack.

This fixes threaded apps that use floating point for me, although
it hasn't solved all the problems.  It is an improvement though.
Preservation of the 128 byte red zone hasn't been resolved yet.

Approved by:  re (scottl)
2003-12-05 01:41:43 +00:00
peter
b339dae7c2 "Fix" makecontext() so that the C code begins execution with its
ABI-required stack alignment.  C code expects that the push of the
return address disturbed the 16 byte alignment and it will take corrective
measures to fix it before making another call.  Of course, if its wrong
to start with, then all hell breaks loose.  Essentially we "fix" this
by making the stack alignment odd to start with.

This was one of the things that broke on libkse with apps that use
floating point/varargs/etc.

Approved by:  re (scottl)
2003-12-05 01:36:44 +00:00
peter
976bb368f6 For the amd64 we need to do some extra stack alignment fixups. Otherwise
we can end up with some threads with a non-16-byte-aligned stack.  This
causes some interesting side effects, including general protection
faults leading to a SIGBUS when doing floating point or varargs.  This
should be just a verbose NOP for the other platforms.

Approved by:  re (scottl)
2003-12-03 06:54:40 +00:00
mtm
9449459c17 Use dynamic instead of static LDT allocation.
Approved by: re (scottl)
2003-12-02 16:00:26 +00:00
dg
da88330aaa Fixed a bug in sendfile(2) where the sent data would be corrupted due
to sendfile(2) being erroneously automatically restarted after a signal
is delivered. Fixed by converting ERESTART to EINTR prior to exiting.

Updated manual page to indicate the potential EINTR error, its cause
and consequences.

Approved by: re@freebsd.org
2003-12-01 22:12:50 +00:00
davidxu
639818d0f3 Eliminate two pushl by using call instruction directly, this really
helps branch predict a lot for INTEL P4.

Approved by: re (scottl)
2003-11-29 14:25:43 +00:00
davidxu
2cc3179bff 1.Macro optimizing KSE_LOCK_ACQUIRE and THR_LOCK_ACQUIRE to use static fall
through branch predict as suggested in INTEL IA32 optimization guide.

2.Allocate siginfo arrary separately to avoid pthread to be allocated at
2K boundary, which hits L1 address alias problem and causes context
switch to be slow down.

3.Simplify context switch code by removing redundant code, code size is
reduced, so it is expected to run faster.

Reviewed by: deischen
Approved by: re (scottl)
2003-11-29 14:22:29 +00:00
davidxu
e9f088c469 Remove surplus mmap() call for stack guard page in init_private, it is done
in init_main_thread. Also don't initialize lock and lockuser again for initial
thread, it is already done by _thr_alloc().

Reviewed by: deischen
Approved by: re (scottl)
2003-11-29 14:10:02 +00:00
obrien
944490ab4b Update with the 4.9 libraries, and add libdevstat.so.2 libmp.so.3
libskey.so.2 libusbhid.so.0 libutil.so.3 libvgl.so.2 to the mix.

Approved by: scottl
2003-11-29 03:29:18 +00:00
marcel
769360c440 Do not adjust to the pagesize at runtime. Besides for the one-time
initialization overhead, there's a problem in that we never call
imalloc() and thus malloc_init() for zero-sized allocations. As a
result, malloc(0) returns NULL when it's the first or only malloc in
the program. Any non-zero allocation will initialize the malloc code
with the side-effect that subsequent zero-sized allocations return a
non-NULL pointer. This is because the pointer we return for zero-
sized allocations is calculated from malloc_pageshift, which needs
to be initialized at runtime on ia64.

The result of the inconsistent behaviour described above is that
configure scripts failed the test for a GNU compatible malloc. This
resulted in a lot of broken ports.

Other, even simpler, solutions were possible as well:
1.  initialize malloc_pageshift with some non-zero value (say 13 for
    8KB pages) and keep the runtime adjustment.
2.  Stop using malloc_pageshift to calculate ZEROSIZEPTR.

Removal of the runtime adjustment was chosen because then ia64 is the
same as any other platform. It is not to say that using a page size
obtained at runtime is bad per se. It's that there's currently a high
level of gratuity for its existence and the moment it causes problems
is the moment you need to get rid of it. Hence, it's not unthinkable
that this commit is (partially) reverted some time in the future when
we do have a good reason for it and a good way to achieve it.

Approved by: re@ (rwatson)
Reported by: kris (portmgr@) -- may the ports be with you
2003-11-28 18:03:22 +00:00
tjr
ab50de63d8 Replace out of date struct statfs definition with a reference to statfs(2).
Approved by:	re
2003-11-21 01:30:28 +00:00
dds
36934d35fe Fix problem where initgroups would silently truncate groups with
more than NGROUP elements without providing the opportunity to
setgroups to fail and correctly return error and set errno.

MFC after:	2 weeks
2003-11-19 15:51:26 +00:00
dds
3a434d3212 Documented missing EINVAL errno value
kern_prot.c:
if (ngrp > NGROUPS)
	return (EINVAL);

MFC after:	2 weeks
2003-11-19 13:05:50 +00:00
jake
3b85e0cc9c Install the user trap handlers that libc provides from a constructor, so
that they will be installed before application constructors are invoked.
Its possible to link applications such that this fails, application code
is invoked before they are installed, but, well, Don't Do That.

Approved by:	re (jhb)
2003-11-18 14:21:41 +00:00
rwatson
36df19adf8 Staticize label_default_head to prevent it from leaking out of mac.c.
Obtained from:	TrustedBSD Project
Sponsored by:	DARPA, Network Associates Laboratories
2003-11-17 19:48:35 +00:00
marcel
69f4b4a520 Declare crc32 static. There's a copy in libz that conflicts for the
crunched binary.

Found by: make release
2003-11-17 05:47:42 +00:00
nectar
72e88767d2 Baby steps. Set WARNS=1 for libc. 2003-11-17 04:20:02 +00:00
nectar
2736f7d1fc Detect range errors when using the %s specifier. Previously, LONG_MAX
was rejected as a range error, while any values less than LONG_MIN
were silently substituted with LONG_MIN.  Furthermore, on some
platforms `time_t' has less range than `long' (e.g. alpha), which may
give incorrect results when parsing some strings.
2003-11-17 04:19:15 +00:00
rwatson
750050e6cb Update mac_set.3 to account for new behavior of mac_set_fd() in the
context of sockets, and document EINVAL as a possible failure mode
based on the object selected, not just the label provided.

Obtained from:	TrustedBSD Project
Sponsored by:	DARPA, Network Associates Laboratories
2003-11-16 20:21:21 +00:00
rwatson
67feac6f9a Implement mac_get_peer(3) using getsockopt() with SOL_SOCKET and
SO_PEERLABEL.  This provides an interface to query the label of a
socket peer without embedding implementation details of mac_t in
the application.  Previously, sizeof(*mac_t) had to be specified
by an application when performing getsockopt().

Document mac_get_peer(3), and expand documentation of the other
mac_get(3) functions.  Note that it's possible to get EINVAL back
from mac_get_fd(3) when pointing it at an inappropriate object.

NOTE: mac_get_fd() and mac_set_fd() support for sockets will
follow shortly, so the documentation is slightly ahead of the
code.

Obtained from:	TrustedBSD Project
Sponsored by:	DARPA, Network Associates Laboratories
2003-11-16 20:18:24 +00:00
deischen
b1926e392e Back out last change and go back to using KSE locks instead of thread
locks until we know why this breaks ia64.

Reported by:	marcel
2003-11-16 15:01:26 +00:00
rwatson
6d8eca04b9 Memory allocated by mac_to_text() must be freed using free(3) not
mac_free(3), which is used only for variables of type mac_t in
the FreeBSD implementation.

Obtained from:	TrustedBSD Project
Sponsored by:	DARPA, Network Associates Laboratories
2003-11-16 04:32:46 +00:00
tjr
506b812053 Resync. struct statfs and flag definitions with sys/mount.h. 2003-11-16 04:08:16 +00:00
harti
91fb8e3f9c Replace all uses of the old netgraph constants NG_*LEN by the new
constants NG_*SIZ that include the trailing NUL byte. This change
is mostly mechanical except for the replacement of a couple of snprintf()
and sprintf() calls with strlcpy.
2003-11-15 15:26:35 +00:00
rwatson
2428701221 Remove debugging printf that crept into the last commit. 2003-11-15 04:05:49 +00:00
rwatson
854a76a79b /etc/mac.conf is implicitly read and parsed when the MAC configuration
is accessed for the first time as a result of an application looking
up label configuration information.  Previously, the check and read
were kicked off by mac_prepare_(typename)() functions; since
mac_prepare_type() may now be directly employed by a user process,
push the check and initialization into that function.

Obtained from:	TrustedBSD Project
Sponsored by:	DARPA, Network Associates Laboratories
2003-11-15 03:34:58 +00:00
tjr
37d23e2aba Update cross references after utf2/euc move. 2003-11-15 02:26:04 +00:00
tjr
dd1aaef04b Remove section 4 versions of these manual pages, they have been
moved into section 5.
2003-11-15 02:15:25 +00:00
tjr
a49a4faf80 Install the section 5 versions of EUC and UTF2 manual pages instead of
the section 4 versions.
2003-11-15 02:13:09 +00:00
tjr
21ec09f9ec Update the EUC and UTF2 manual pages for their new home in section 5.
These have been repo-copied from euc.4 and utf2.4.
2003-11-15 01:54:46 +00:00
bms
47c129ab44 Add the userland part of the NET_RT_IFMALIST sysctl MIB. A new function,
getifmaddrs(), is added to retrieve current multicast group memberships.

Reviewed by:	harti
2003-11-14 18:53:22 +00:00
ume
bad03e1210 u_int8_t cannot carry a number greater than 255.
Reported by:	nectar
2003-11-14 18:07:50 +00:00
harti
5afef437ec Use the new defines that include the trailing '\0' in the code.
Replace occurences of the magic constant 2 with an offsetof macro
call that computes the size of the leading members of the sockaddr.
Use strlcpy instead of sprintf where appropriate. Document the new changes
in the man page.
2003-11-14 08:09:01 +00:00
alc
4f9f6de201 - Add documentation for EBUSY.
- Remove EIO.
 - Add a cross reference to mlock(2).
2003-11-14 07:18:12 +00:00
jeff
296889def0 - Use the magic for ___sigreturn in __sigset.
- In __sigreturn call sigprocmask() to restore our signal state rather than
   returning through sigreturn().  jmp to ___sigreturn to restore our register
   state following this.

Requested by:	pete
2003-11-14 03:21:22 +00:00
harti
a13d5675bc Add an empty definition of the MIBS variable so that the makefile does
not try to use a MIBS definition from the environment.

Submitted by:	Joe Marcus Clarke <marcus@marcuscom.com>
2003-11-13 10:18:16 +00:00
sobomax
7c6af783e5 Fix on sparc64.
Reported by:	rwatson/tinderbox
MFC after:	2 weeks
2003-11-12 23:36:17 +00:00
rwatson
ba0d21ac7c Bump the major version on libtuil. libutil now relies on the mac_*
symbols exported by newer versions of libc, and so we want applications
depending on the newer library code to be required to link against the
newer libc.

Discussed with:	scottl, kris, imp
2003-11-12 21:56:07 +00:00
sobomax
c33bd8de41 Add a new configuration variable - nas_ipaddr, which if set allows to
set NAS-IP-Address attribute in requests generated by the pam_radius
module. This attribute is mandatory for some Radius servers out there.

Reviewed by:	des
MFC after:	2 weeks
2003-11-12 17:47:23 +00:00
marcel
58594e4f86 The partition naming on ia64 (e.g. da0p1) cannot be selected based
on whether the parent chunk is of type whole. This also applies to
MBR slices for non-GPT disks. Since most of the GPT handling is
conditionally compiled, do the same with the partition naming.

This fixes a braino that caused slices to be named as GPT partitions
and generally messing up an install.

Pointy hat: marcel
2003-11-12 17:44:37 +00:00
harti
336e573a13 The snmp_netgraph module depends on libnetgraph. So add a dependency and
add libnetgraph to the list of prebuilt libraries in the main Makefile.

Reviewed by:	ru
2003-11-12 17:09:13 +00:00
tjr
7a8b48f087 Use __sfvwrite() instead of __sputc() via __fputwc() to write to fake
string files (__SSTR flag set). This is necessary because __sputc()
does not respect the __SALC flag, and crashes trying to flush the buffer
instead of resizing it.

PR:		59167
2003-11-12 08:49:12 +00:00
kensmith
3a0281dcf0 - Markup fix-ups (add .Dq, and some hard line breaks at the end
of sentences).

Approved by:	blackend (mentor)
2003-11-11 18:31:36 +00:00
kensmith
c0be2ff06a - Add a note about how jail(2) effects the securelevel.
Reviewed by:	rwatson
Approved by:	blackend (mentor)
2003-11-11 18:21:20 +00:00
brueffer
8ffd3da875 Add information about the EVFILT_NETDEV filter
PR:		docs/56872 (based on)
Submitted by:	Suleiman Souhlal <refugee@vt.edu>
Reviewed by:	hmp, jmg
2003-11-11 16:41:27 +00:00
tjr
042225384f Fix a typo that caused mbrtowc() to always return 0. 2003-11-11 07:25:05 +00:00
jkoshy
cc852a80a3 Add a section documenting the sysctl(8) tunables that influence the
operation of ktrace(2).  Add a cross-reference to sysctl(8).  Make the
language of rev 1.22 more consistent with the rest of the manual page.
2003-11-11 04:59:25 +00:00
kientzle
a3df3cda24 Improve the performance of radixsort() when
sorting strings with common prefixes by noting
when all the strings land in just one bin.

Testing shows significant speedups (on the order of
30%) on strings with common prefixes and no slowdowns on any
of my test cases.

Submitted by: Markus Bjartveit Kruger <markusk@pvv.ntnu.no>
PR: 58860
Approved by: gordon (mentor)
2003-11-11 04:59:23 +00:00
jkoshy
edc6e45a50 Have utrace(2) return ENOMEM if malloc() fails. Document this error
return in its manual page.

Reviewed by:	jhb
2003-11-11 04:54:11 +00:00
emax
de7e59e1a7 Fix few typos
Reviewed by: imp, julian, ru
Approved by: imp (mentor)
2003-11-11 02:43:10 +00:00
ghelmer
c038927dce Remove ',' accidentally added after ".Xr fork 2". 2003-11-10 22:04:51 +00:00
ghelmer
c5fcb1b225 Prevent abnormal termination of a child daemon process when created
by a parent that is a session leader (e.g., login shell) by ignoring
SIGHUP in before calling fork(2) and then restoring SIGHUP's action
after setsid(3).  Based on the patch by Martin Kammerhofer
<mkamm@gmx.net>.

PR:		bin/25462
Reviewed by:	bde, alex.neyman@auriga.ru
2003-11-10 22:01:42 +00:00
harti
944e5099fb Fix the build by adjusting the include directives. The problem was
that the sources use "..." includes to get at include files that
later on reside in an include sub-directory.
2003-11-10 13:43:26 +00:00
harti
dd594e446a Link libbsnmp to the build. 2003-11-10 09:18:04 +00:00
harti
7b57d9c631 Add build infrastructure for libbsnmp and the modules. Add the
netgraph module for the SNMP daemon.
2003-11-10 09:17:34 +00:00
des
fca1569a1b Document EINVAL for len == 0. 2003-11-10 08:02:05 +00:00
jkoshy
382ccc28a4 Document KTR_DROP. 2003-11-10 04:34:51 +00:00
davidxu
27be031526 If a thread in critical region got a synchronous signal, according current
signal handling mode, there is no chance to handle the signal, something
must be wrong in the library, just call kse_thr_interrupt to dump its core.
I have the code for a long time, but forgot to commit it.
2003-11-09 00:37:14 +00:00
davidxu
48868cdc76 Use THR lock instead of KSE lock to avoid scheduler be blocked in spinlock.
Reviewed by: deischen
2003-11-08 06:07:04 +00:00
marcel
6ae3d37f99 Virtual addresses in headers of ELF files for dynamic objects need
to be relocated before they can be used as pointers.
2003-11-08 05:29:49 +00:00
tjr
0ea91c92a7 Add one more cross-reference to gb2312(5). 2003-11-08 03:23:11 +00:00
tjr
43f8154f97 Add cross-references to new gb2312(5) manual page. 2003-11-08 03:07:56 +00:00
tjr
50e07efd60 Add a fairly simple manual page for the new GB2312 encoding. 2003-11-08 03:02:45 +00:00
tjr
866579d246 Remove unused #includes. 2003-11-08 02:58:37 +00:00
tjr
c48a892fd1 Use __inline instead of inline. 2003-11-08 02:56:03 +00:00
tjr
7f360419c4 Refer to wide characters instead of runes. Remove redundant example locale.
Catch up with renaming of "Japanese" to "ja_JP.eucJP". Comment out the
statement that EUC is provided for compatibility with UNIX-based systems;
this is not a very good opening paragraph.
2003-11-08 02:52:31 +00:00
tjr
3433ed9c17 Refer to wide characters instead of runes. 2003-11-08 02:46:02 +00:00
harti
0defd13ce3 Build the layer 3 (signalling) stuff into the library and install
the corresponding headers.
2003-11-07 09:10:25 +00:00
kientzle
776db871bd Rephrase .Nd description to contain the key
words "pattern" and "test"; this should make it easier
to find with "man -k"

Approved by: gordon (mentor)
2003-11-06 00:52:37 +00:00
davidxu
a6e1effefa Add gb2312 encoding. 2003-11-05 22:52:51 +00:00
deischen
75b2a9cea3 style(9)
Reviewed by:	bde
2003-11-05 18:19:24 +00:00
deischen
c99795abd5 Don't declare the malloc lock; use the declaration provided in libc.
Noticed by:	bde
2003-11-05 18:18:45 +00:00
deischen
eca908227a Remove #include of spinlock.h from libc_private.h. Declare spinlocks as
struct _spinlock.  Keep the typedef in for now; another set of changes
may come around to clean up consumers of spinlocks.

Requested by:	bde
2003-11-05 18:17:30 +00:00
ume
1b0d2b237e - plug memory leak.
- fixed a length of the sadb extension in the case of pfkey_send_x5().
- used getprotobynumber() for printing a upper layer protocol name.
- modified the output format against the change of the setkey syntax
  about a icmp6 type/code.
- don't enumerate reserved fields.  use memset.

Obtained from:	KAME
2003-11-05 09:41:23 +00:00
tjr
736d21ee30 Pass NULL instead of a pointer to a zeroed mbstate_t object. 2003-11-05 08:20:45 +00:00
tjr
34fe8a239a Pass NULL instead of a pointer to a zeroed mbstate_t object. 2003-11-05 08:07:00 +00:00
tjr
bd6d8c9eef Implement mbrtowc() and wcrtomb() directly (sync with big5.c). 2003-11-05 07:56:45 +00:00
davidxu
66e5a49572 Add pthread_atfork() source code. Dan forgot to commit this file. 2003-11-05 03:42:10 +00:00
deischen
1191fa7e32 Add an implementation for pthread_atfork().
Aside from the POSIX requirements for pthread_atfork(), when
fork()ing, take the malloc lock to keep malloc state consistent
in the child.

Reviewed by:	davidxu
2003-11-04 20:04:45 +00:00
deischen
573b809044 Add the ability to reinitialize libpthread's internal FIFO-queueing
locks.

Reviewed by:	davidxu
2003-11-04 20:01:38 +00:00
deischen
3153a078d8 Add the ability to reinitialize a spinlock (libc/libpthread
internal lock, not a pthread spinlock).

Reviewed by:	davidxu
2003-11-04 19:59:22 +00:00
deischen
b961438622 s/foo()/foo(void)/
Add a blank line after a variable declaration.
2003-11-04 19:58:12 +00:00
deischen
06593e0c1a Libpthread uses the convention that all of its (non-weak) symbols
begin with underscores and provide weak definitions without
underscores.  Make the pthread spinlock conform to this convention.
2003-11-04 19:56:12 +00:00
deischen
3ccfc8a9e4 Add the ability to reinitialize a mutex (internally, not a userland
API).

Reviewed by:	davidxu
2003-11-04 19:53:32 +00:00
deischen
96918b9811 Externalize malloc's spinlock so that a thread library can take
it around an application's fork() call.  Our new thread libraries
(libthr, libpthread) can now have threads running while another
thread calls fork().  In this case, it is possible for malloc
to be left in an inconsistent state in the child.  Our thread
libraries, libpthread in particular, need to use malloc internally
after a fork (in the child).

Reviewed by:	davidxu
2003-11-04 19:49:56 +00:00
tjr
46a574efa9 Pass mbrtowc() and wcrtomb() NULL instead of a pointer to a freshly zeroed
mbstate_t object that they ignore. The zeroing is fairly expensive, and it
will never be necessary in these functions; when we support state-dependent
encodings, we will pass in a pointer to the file's mbstate_t object, and
only zero it at the time the file gets opened.
2003-11-04 11:05:55 +00:00
tjr
28ea32e3d1 Add a reference to the new utrace(2) manual page. 2003-11-04 09:15:42 +00:00
green
1bb1923e83 * Modify libpcap to work a bit better with our 802.11 code. This means
tcpdump -y ieee802_11 will work in the basic senses, including the
  code compilation for filters (where you may specify "link[]" to refer
  to parts of the 802.11 header, as well as treat it like a normal
  Ethernet header).  Previously, it was just too far off to do anything
  useful for us.
* While I'm here, fix some compile problems that will result from lex
  and yacc namespace polution when linking with -lpcap.  The namespace
  is now "pcapyy*" instead of "yy*", and it tests fine with world and
  some external applications that may or may not use "yy*".
2003-11-04 06:12:21 +00:00
marcel
2e797ba95c o Save a copy of the GPT entries for which there's a chunk with an
index referencing it. We need to know the original type and name
   so that we know what to put in the table when we reconstruct it.
o  Clear the table entries before we rebuild it to avoid that we
   end up with stale data.
o  Sequentially populate the table entries from the chunks. For the
   chunks that have an index (now referencing the saved copy) we
   use the saved type and name. This way we can handle unknown types
   better. In all cases we update the start and end LBAs.
2003-11-04 03:49:01 +00:00
rwatson
cc028c9ae3 When printing ACLs, truncate user and group names if they're too long,
rather than generating an error.  This is consistent with other tools
printing user and group names, and means you can read the ACL using
our tools rather than being up a creek.

PR:		56991
Submitted by:	Michael Bretterklieber <mbretter@a-quadrat.at>
2003-11-03 21:00:16 +00:00
harti
6d5fff6caa Build address handling, traffic descriptor handling, encoding and decoding
into the library.
2003-11-03 12:27:22 +00:00
marcel
f46a656239 Don't divide the start and end of the chunk by the sector size when
filling in the GPT entry. Both are already in sector numbers (LBA)
and exactly what we need for the entry. We now write a structurally
correct GPT partitioning.
2003-11-03 06:52:30 +00:00
marcel
2464f65e4a Fix two bugs in the calculation of the last LBA of the GPT covered
part of the disk. The first appears to be a typo and instead of
dividing the media size with the sector size, we multiplied. The
second is an off-by-1 error that's the result of mixing up count
and index. The code in question is only applicable for virgin disks
and is used to create the "whole" chunk, which covers only the GPT
usable portion of the disk.
2003-11-03 06:24:48 +00:00
marcel
15f1414b69 Rewrite Write_Disk() so that it creates a GPT. Note that the code is
basicly untested, but the guts is all there. I need to free up a disk
before I give it a spin.
2003-11-03 03:18:34 +00:00
tjr
1c3a3f7e26 Convert the Big5, EUC, MSKanji and UTF-8 encoding methods to implement
mbrtowc() and wcrtomb() directly. GB18030, GBK and UTF2 are left
unconverted; GB18030 will be done eventually, but GBK and UTF2 may just
be removed, as they are subsets of GB18030 and UTF-8 respectively.
2003-11-02 10:09:33 +00:00
marcel
a72947f900 Turn Write_Disk() into a stub for now. It needs to be rewritten to
write out a GPT and not a MBR.
2003-11-02 08:41:18 +00:00
marcel
f637cc6639 o Move Int_Open_Disk() from disk.c to open_disk.c for use by all
platforms except ia64 and use Int_Open_Disk() in open_ia64_disk.c
   on ia64. We need to know more than GEOM can provide us so we're
   forced to read from the disk. Move uuid_type() to open_ia64_disk.c
   and remove all references on non-ia64.
o  Pass the GEOM conftxt to Int_Open_Disk() so that only Open_Disk()
   needs to know about GEOM and libdisk can more easily be used with
   media not handled by GEOM.
o  Create an ia64 specific definiton of struct disk on ia64, because
   we don't need/have most of the fields other platforms need and
   other fields not applicable on platforms other than ia64.
o  Do not compile change.c on ia64. It's too PC specific.
o  In Fixup_Names() in create_chunk.c, try all partition numbers
   that are valid for the GPT disk. We have the total number of
   partitions that can be allocated in the disk structure on ia64.
   Also, use the GPT partition naming if we're creating one under
   a chunk of type "whole". It's a GPT partition in that case.
o  In Create_Chunk(), compile-out the PC specific code on ia64 that
   checks BIOS geometry restrictions.
o  In Debug_Disk() in disk.c, dump the ia64 specific fields.
o  Save the partition index in the chunk on ia64 so that we can
   preserve it when we write the data back to disk. This avoids that
   partitions get moved around or swapped after installing FreeBSD,
   which may render a disk unusable.
2003-11-02 08:39:08 +00:00
marcel
d4476d880f Do not fill in d_ncylinders, d_ntracks and d_nsectors in the disklabel
on ia64. Not only do we not have a disklabel by default, we also do
not have a notion of cylinders, tracks and sectors.
2003-11-02 08:07:25 +00:00
marcel
470ee47978 Compile-out support for allfreebsd, dedicate, sanitize and bios on
ia64. These commands are PC specific and not supported.
2003-11-02 08:01:18 +00:00
marcel
ddedcf0a1f Turn Track_Aligned(), Prev_Track_Aligned(), Next_Track_Aligned(),
Cyl_Aligned(), Prev_Cyl_Aligned() and Next_Cyl_Aligned() into
tautologies on ia64. GPT removes all notion of tracks, heads and
sectors per track, so there are no alignment considerations.
2003-11-02 07:58:19 +00:00
marcel
841bb23cd9 o In Print_Chunk(), don't print the address of the chunk on ia64. It
doesn't have any meaning and only results in lines longer than 80
   characters.
o  In Delete_Chunk2(), also look for chunks of type "part" under
   chunks of type "whole" on ia64. They're not only under chunks of
   type "freebsd" there.
2003-11-02 07:44:59 +00:00
tjr
cdb4de5776 Remove TODO comment about creating a macro version of towctrans().
Remove unnecessary inclusion of <ctype.h>.
2003-11-01 08:20:58 +00:00
tjr
f34fc0c744 Fix a typo that caused the optimized single-byte locale path not to be taken. 2003-11-01 08:18:18 +00:00
tjr
3ba101637b Add a manual page for the utrace() system call.
Obtained from:	NetBSD
2003-11-01 05:36:14 +00:00
tjr
3c1f1a199d Allow mbrtowc() and wcrtomb() to be implemented directly, instead of
as wrappers around the deprecated 4.4BSD rune functions. This paves the
way for state-dependent encodings, which the rune API does not support.
- Add __emulated_sgetrune() and __emulated_sputrune(), which are
  implementations of sgetrune() and sputrune() in terms of
  mbrtowc() and wcrtomb().
- Rename the old rune-wrapper mbrtowc() and wcrtomb() functions to
  __emulated_mbrtowc() and __emulated_wcrtomb().
- Add __mbrtowc and __wcrtomb function pointers, which point to the
  current locale's conversion functions, or the __emulated versions.
- Implement mbrtowc() and wcrtomb() as calls to these function pointers.
- Make the "NONE" encoding implement mbrtowc() and wcrtomb() directly.

All of this emulation mess will be removed, together with rune support,
in FreeBSD 6.
2003-11-01 05:13:13 +00:00
tjr
44278bfe73 Don't bother passing a freshly-zeroed mbstate to mbsrtowcs() etc.
when the current implementation won't use it, anyway. Just pass NULL.
This will need to be changed when state-dependent encodings are
supported, but there's no need to take the performance hit
in the meantime.
2003-10-31 13:29:00 +00:00
tjr
1ace50578b Implement fgetrune(), fungetrune() and fputrune() as wrappers around
fgetwc(), ungetwc() and fputwc().
2003-10-31 10:55:19 +00:00
ume
9bdda800ef add destination address selection described in RFC3484.
in KAME implementation, even when no policy is installed
into kernel, getaddrinfo(3) sorts addresses.  Since it
causes POLA violation, I modified to don't sort addresses
when no policy is installed into kernel,

Obtained from:	KAME
2003-10-30 17:36:53 +00:00
phk
b46a641096 Add '#' to the characters VIS_GLOB encodes. This fixes a bug in mtree. 2003-10-30 12:41:50 +00:00
phk
eae6949d99 Add a new flag to vis(3): VIS_GLOB which encodes the glob(3) magic
characters '*', '?' and '['.
2003-10-30 10:40:49 +00:00
simokawa
883f5b4450 Allow to specify a character special device as a core file.
This enable us to use /dev/fwmem* as a core file.
e.g.
	ps -M /dev/fwmem0.0 -N kernel.debug
	dmesg -M /dev/fwmem0.0 -N kernel.debug
	gdb -k -c /dev/fwmem0.0 kernel.debug
You need to set target EUI64 in hw.firewire.fwmem.eui64_hi/lo before
opening the device. On the target arch, (PCI) bus address must be
equivalent to physical address.
(We cannot use this for sparc64 because of IOMMU.)

No objection in: -audit
2003-10-29 14:02:16 +00:00
tjr
f2e37a2394 Remove __NETBSD_SYSCALLS. 2003-10-29 10:55:56 +00:00
tjr
8366c4708a Remove incomplete support for running FreeBSD userland on old NetBSD kernels
lacking the issetugid() and utrace() syscalls.
2003-10-29 10:45:01 +00:00
mbr
a387522971 Make this part identical with NetBSD: Use recvlen instead of inlen.
No functionality change.

Obtained from:	NetBSD
2003-10-29 09:25:07 +00:00
mbr
c2a099bee6 Don't compare NULL against a character.
Obtained from:	NetBSD
2003-10-29 09:22:49 +00:00
mbr
60f777a467 Don't use NULL to compare against a char.
Obtained from:	NetBSD
2003-10-29 09:20:33 +00:00
mbr
d440ee0ba5 Don't use NULL to compare against a character.
Obtained from:	NetBSD
2003-10-29 09:18:44 +00:00
peter
ef64cc476e Don peril sensitive (ie: bikeshed sensitive) sunglasses and quietly
send strhash(3) off to sleep with the fishes.  Nothing in our tree uses it.
It has no documentation.  It is nonstandard and in spite of the filename
strhash.c and strhash.h, it lives in application namespace by providing
compulsory global symbols hash_create()/hash_destroy()/hash_search()/
hash_traverse()/hash_purge()/hash_stats() regardless of whether you
#include <strhash.h> or not.  If it turns out that there is a huge
application for this after all, I can repocopy it somewhere safer and
we can revive it elsewhere.  But please, not in libc!
2003-10-28 22:36:54 +00:00
das
477842ce6b Fix a problem where libm compiled under 5.X would depend on features
that are only in libc.so.5.  This broke some 4.X applications linked
to libm and run under 5.X.

Background:
In C99, isinf() and isnan() cannot be implemented as regular
functions.  We use macros that call libc functions in 5.X, but for
libm-internal use, we need to use the old versions until the next
time libm's major version number is bumped.

Submitted by:	bde
Reported by:	imp, kris
2003-10-27 01:28:07 +00:00
ume
5d571f04bf - errx() doesn't need `\n'.
- use %u for unsigned variable.

Obtained from:	KAME
2003-10-26 12:00:27 +00:00
ume
9bbe925835 revert previous change. we don't need to include types.h. 2003-10-26 11:11:13 +00:00
peter
92983ccab1 Preserve the constness of the value argument passed to env_setenv() as
it gets passed through the filter functions.
2003-10-26 04:04:12 +00:00
peter
cb29a24d26 Pacify gcc about casting pointers to integers (for the lowest few bits). 2003-10-26 03:55:58 +00:00
peter
79a9b01a78 (mostly) Clean up some const warnings here. The code takes some liberties
because it is the originator of various const strings and knows that they
came from malloc.
2003-10-26 03:51:47 +00:00
peter
eaeee19e67 clnt_call takes args of type xdrproc_t. 2003-10-26 03:43:35 +00:00
phk
a98bdabe34 Consistently cast to (u_char *) when filling with junk. 2003-10-25 23:47:33 +00:00
des
a7b0d81550 Better safe than clever.
Submitted by:	das
2003-10-25 19:53:28 +00:00
des
681563239d Document fabsl(3).
Submitted by:	Stefan Farfeleder <stefan@fafoe.narf.at>
2003-10-25 13:45:11 +00:00
phk
9c4255e21c Style changes. Inching closer to convergence with OpenBSD. 2003-10-25 12:56:51 +00:00
des
8c5b85e155 - fabsl.c should be named s_fabsl.c for consistency with libmsun's
documented naming scheme (unfortunately the documentation isn't in the
   tree as far as I can tell); no repocopy is required as there is no
   history to preserve.

 - replace simple and almost-correct implementation with slightly hackish
   but definitely correct implementation (tested on i386, alpha, sparc64)
   which requires pulling in fpmath.h and the MD _fpmath.h from libc.

 - try not to make a mess of the Makefile in the process.

 - enterprising minds are encouraged to implement more C99 long double
   functions.
2003-10-25 09:32:18 +00:00
ume
72898b10e9 according to RFC3542 10.5, the 5th argment of inet6_opt_next()
is not size_t but socklen_t.

Reported by:	tinderbox
2003-10-25 06:51:23 +00:00
kensmith
c20f599a53 - fix description of what processes SIGCONT can be sent to
PR:		docs/58413
Reviewed by:	rwatson
Approved by:	blackend (mentor)
2003-10-24 21:20:26 +00:00
ume
bb36ba6684 oops, revert previous change to getaddrinfo.c. This is not related
to RFC3493.  The previous change was related to RFC3484 (Default
Address Selection for IPv6), and it will come later.
2003-10-24 18:43:24 +00:00
ume
881c4fa391 Switch Advanced Sockets API for IPv6 from RFC2292 to RFC3542
(aka RFC2292bis).  Though I believe this commit doesn't break
backward compatibility againt existing binaries, it breaks
backward compatibility of API.
Now, the applications which use Advanced Sockets API such as
telnet, ping6, mld6query and traceroute6 use RFC3542 API.

Obtained from:	KAME
2003-10-24 18:26:30 +00:00
ume
a30fc1e901 reorder functions to be in sync with KAME. 2003-10-23 14:32:03 +00:00
ume
0bbe986bd7 EAI_ADDRFAMILY and EAI_NODATA was deprecated in RFC3493
(aka RFC2553bis).  Now, getaddrinfo(3) returns EAI_NONAME
instead of EAI_NODATA.  Our getaddrinfo(3) nor getnameinfo(3)
didn't use EAI_ADDRFAMILY.

Obtained from:	KAME
2003-10-23 13:55:36 +00:00
ume
2b7b4d364f preparation for RFC3493. EAI_NODATA was deprecated. 2003-10-23 13:50:01 +00:00
des
6cefc48da3 Connect fabsl.c to the build. 2003-10-23 08:23:51 +00:00
des
858c5bdd96 Add prototypes for all long double functions in C99. Leave them all
#if 0'd out, except for fabsl(3) which I've implemented.
2003-10-23 08:23:38 +00:00
des
0c217c1679 Implement fabsl(3), allowing the world to build with -fno-builtin. 2003-10-23 08:20:47 +00:00
peter
9fdc368a9c Use amd64_set_fsbase() instead of calling sysarch() directly. 2003-10-23 06:12:57 +00:00
peter
893be074c1 Add implementations of amd64_[gs]et_[fg]sbase(). 2003-10-23 06:07:09 +00:00
ume
78f757ea79 oops, gai_strerror must return default value when error code
isn't found in ai_errlist.
2003-10-22 16:53:21 +00:00
ume
241d46a988 make ai_errlist struct. this is preparation for RFC3493
(EAI_NODATA is depricated).

Obtained from:	KAME
2003-10-22 15:41:38 +00:00
harti
e5c8f84177 Link libngatm to the build (unless NOATM is set). 2003-10-22 15:01:16 +00:00
harti
1bdf27a0d0 Makefile for the NgATM user space library. 2003-10-22 11:52:35 +00:00
marcel
e03bb88101 The FP status register allows for 6 traps to be masked. One of them,
the denormal/unnormal trap, is not a standard IEEE trap. We did
not exclude it from being returned by fpgetmask(), nor did we make
sure that fpsetmask() didn't clobber it. Since the non-IEEE trap
is not part of fp_except_t, users of ifpgetmask()/fpsetmask() would
be confronted with unexpected behaviour, one of which is a SIGFPE
for denormal/unnormal FP results.

This commit makes sure that we don't leak the denormal/unnormal mask
bit in fp_except_t and also that we don't clobber it.
2003-10-22 09:00:07 +00:00
ume
bf741bc603 stop use of NI_WITHSCOPEID. it was deprecated.
Obtained from:	KAME
2003-10-21 20:11:47 +00:00
dds
29609834fe Bring the description of st_[cma]time modification conditions a bit
closer to reality.  More work remains to be done.  st_mtime should
be the most complete based on IEEE Std 1003.1, 2003 Edition, a
review of ufs_vnops.c, and some experimentation.
2003-10-20 13:52:22 +00:00
deischen
ef384a447b This test relies on the concurrency level being 1; make it so. 2003-10-20 04:23:49 +00:00
jmg
a41bb92cf2 document the fact that kqueue will immediately return and not timeout when
nevents is 0.

PR:		kern/45291
2003-10-20 02:29:16 +00:00
markm
3f45792057 ANSIfy, WARNSify, CONSTify. Bit of style(9)-ify. 2003-10-18 10:04:16 +00:00
markm
4d1565cf18 Remove a GCC specifig CFLAG. We should be using WARNS=? for this.
WARNS=? is not added here at this point, because I've not tested
it on enough platforms, and I don't want to break builds.
2003-10-18 09:58:39 +00:00
kensmith
c204cb0df7 - fix to UID test description, non-zero -> zero
PR:		docs/57799
Reviewed by:	des
Approved by:	blackend (mentor)
2003-10-17 17:03:38 +00:00
peter
aa62482800 Update context code for my last ABI breakage of mcontext. I'm worried
about the fpu code here.  It should be using fxsave/fxrstor instead of
saving/restoring the control word.  The SSE registers are used a lot in
gcc generated code on amd64.  I'm not sure how this all fits together
though.
2003-10-17 16:30:09 +00:00
peter
81586929f3 Explicitly specify an alignment for abitag. Without it, gcc specifies a
section alignnment of 16 bytes for amd64 and this breaks file(1).
Before:
./cp: ELF 64-bit LSB executable, AMD x86-64, version 1 (FreeBSD), for \
  FreeBSD 127.7.9, statically linked, stripped
after:    ^^^^^^^
./ls: ELF 64-bit LSB executable, AMD x86-64, version 1 (FreeBSD), for \
  FreeBSD 5.0.1, dynamically linked (uses shared libs), stripped

The reason for this is that the NOTE sections are not contiguous
internally.  If the note section has an alignment of 16, then anything
that looks for the data is supposed to round up the payload start to
the next multiple of the alignment.  But FreeBSD/amd64 broke because the
structure is declared as a single structure, not a (header,payload) group,
where the payload had an explicit alignment roundup.

The alternative is to change things like file(1) to ignore the ELF payload
alignment rules for the PT_NOTE section only for FreeBSD.
2003-10-17 15:43:13 +00:00
alc
b1c274e0be Add rfork_thread(3). 2003-10-13 20:32:33 +00:00
ume
fd41336ef5 - support AES counter mode for ESP.
- use size_t as return type of schedlen(), as there's no error
  check needed.
- clear key schedule buffer before freeing.

Obtained from:	KAME
2003-10-13 14:57:41 +00:00
bde
47ef5b092f Include <nlist.h> for nlist-related declarations instead of depending on
namespace pollution in <kvm.h>.
2003-10-13 05:30:20 +00:00
ume
de427fb9bf - support AES XCBC MAC for AH
- correct SADB_X_AALG_RIPEMD160HMAC to 8

Obtained from:	KAME
2003-10-13 04:54:51 +00:00
bde
08298e8fb5 Fixed some style bugs in the removal of __P(()). Blind removal of
spaces before __P(()) outdented continuation lines to column 0.
2003-10-13 04:44:55 +00:00
emax
41bb0e8fd2 Update Bluetooth code.
Reviewed by: M. Warner Losh <imp@bsdimp.com>; John Hay <jhay@freebsd.org>
Approved by: M. Warner Losh <imp@bsdimp.com> (mentor)
2003-10-12 22:04:24 +00:00
deischen
b5f43f9f88 Don't forget to initialize the fake tcb when the kcb is allocated. 2003-10-12 16:50:45 +00:00
ume
2da6bcd326 - RIPEMD160 support
- pass size arg to ah->result (avoid assuming result buffer size)

Obtained from:	KAME
2003-10-12 09:41:42 +00:00
dds
b2c1ae4295 Changed EINVAL constant reference from UIO_MAXIOV to IOV_MAX.
The former is a kernel-only visible constant, the latter the
POSIX-specified userland constant defined by including limits.h.
2003-10-11 20:47:44 +00:00
hmp
4426030508 Assorted mdoc(7) fixes:
- fix hard sentence breaks
	- sprinkle a few .Vt's where neccessary
	- remove incorrect use of `\-'
	- proper quoting using .Dq, instead of manual ``...''

Approved by:	des@ (mentor)
Reviewed by:	ru@
2003-10-09 23:06:06 +00:00
deischen
8df72a4176 Reverse the order of the first two arguments to _sparc64_enter_uts().
The first argument is the UTS function, the second argument is the
first argument to the UTS function.  Who's on first.
2003-10-09 20:52:17 +00:00
deischen
69eb1f0d34 Convert a couple of hardcoded values to constants. Make thr_getcontext()
return 0 when called the first time, and return 1 when resumed by
thr_setcontext().
2003-10-09 14:48:09 +00:00
hmp
f280804c96 Remove unneccessary include of sys/types.h in the SYNOPSIS
header.

Sys/param.h includes sys/types.h internally unless LOCORE is
defined.

Approved by:	des (mentor)
2003-10-09 09:45:20 +00:00
deischen
801ac4642e Add preliminary sparc64 support to libpthread. This does not
yet work, but hopefully someone familiar with the sparc64
port can pick up the reins.

Submitted by:	jake
With mods by:	deischen
2003-10-09 02:32:28 +00:00
davidxu
97f8d9d1b5 Fix some comments for last commit. 2003-10-08 00:30:38 +00:00
davidxu
debdb208b6 Complete cancellation support for M:N threads, check cancelling flag when
thread state is changed from RUNNING to WAIT state and do some cancellation
operations for every cancellable state.

Reviewed by: deischen
2003-10-08 00:20:50 +00:00
davidxu
3ea48105a7 Use thread lock instead of scheduler lock to eliminate lock contention
for all wrapped syscalls under SMP.

Reviewed by: deischen
2003-10-08 00:17:13 +00:00
phk
02fccf5b64 Add XXX'ed temporary bounce-buffering. 2003-10-07 07:12:22 +00:00
bms
3a6a851fce Correct .Xr's in kiconv.3.
Submitted by:	osa
2003-10-05 13:39:28 +00:00
deischen
660d6cc7c1 Fix a logic error; use beq to check for a register being NULL, not bne. 2003-10-02 20:51:30 +00:00
ru
835c0f8d8c Correct the library name. 2003-10-02 19:19:07 +00:00
kensmith
d3ab7edea6 - Remove error code that can't be returned (and original description
was not proper English)

PR:             docs/57434
Approved:       blackend (mentor)
Reviewed by:    deischen
2003-10-02 18:30:15 +00:00
davidxu
bde7cb88e1 Only generate code for _LCK_ASSERT if _LCK_DEBUG is defined. 2003-10-02 03:24:26 +00:00
tjr
ac45d6b57e Cite the published version of "Engineering a Sort Function" instead of
an email address.  Spell McIlroy correctly.
2003-09-30 07:05:46 +00:00
deischen
c568e81b8f If __sys_write() returns 0, allow that to exit the loop in libc_r's
wrapped version of write().

Submitted by:	dan@langille.org
2003-09-29 13:41:26 +00:00
davidxu
a0841bce6f When concurrency level is reduced and a kse is exiting, make sure no other
threads are still referencing the kse by migrating them to initial kse.

Reviewed by: deischen
2003-09-29 06:25:04 +00:00
davidxu
5910a67bb3 Remove unused variable. 2003-09-28 13:47:29 +00:00
marcel
4d437893ac Relink libc_r.a, libc_r.so and libc_r_p.so from libthr to libkse.
On ia64, where there's no libc_r at all, libkse is now the default
thread library by virtue of these links.

The reasons for this change are:
1. libkse is slated to become the default thread library anyway,
2. active development and maintenance is only present for libkse,
3. GNOME and KDE, both in the process of being supported on ia64,
   work better with KSE; even on ia64.
2003-09-27 23:27:19 +00:00
phk
732b6aad5c More style fixes to improve diffability with OpenBSD.
Pull 'A' evilness for realloc(3) from OpenBSD.
2003-09-27 18:58:26 +00:00
rwatson
9c09012ffb Disable #define DEBUG in libdisk by default: since libdisk is primarily
there to support sysinstall, and enabling DEBUG creates spurious
console output that can't be read anyway...  This slightly cleans up
the visual impression of the system install by not spamming the console
during the labeling of the disks.
2003-09-27 17:44:41 +00:00
phk
edc864517b Style changes to improve diffability against OpenBSD version. 2003-09-27 17:29:03 +00:00
tjr
1953894b85 Document KERN_PROC_PROC, update KERN_PROC_ALL description. 2003-09-27 08:22:23 +00:00
tjr
f428d37a30 Use the 3-component version of the KERN_PROC_PROC sysctl. 2003-09-27 08:14:37 +00:00
fjoe
571ef024e3 - Support for multibyte charsets in LIBICONV.
- CD9660_ICONV, NTFS_ICONV and MSDOSFS_ICONV kernel options
(with corresponding modules).
- kiconv(3) for loadable charset conversion tables support.

Submitted by:	Ryuichiro Imura <imura@ryu16.org>
2003-09-26 20:26:25 +00:00
davidxu
32dea828c9 Add __volatile keyword. 2003-09-26 11:59:04 +00:00
marcel
920b0b7883 s/ia64/alpha/g 2003-09-26 06:53:54 +00:00
peter
46beb6a562 Fix fabs(). This commit brought to you by the letter 'l'.
(fstp stores a mem32 value, fstpl stores a mem64 value)

This fixes ghostscript for 'make release' on amd64.  Ghostscript for some
reason thinks it is a good idea to use -fno-builtin, which means it is
vulnerable to bugs in libc that are normally hidden by the builtin gcc
functions.  Oops.
2003-09-26 01:49:48 +00:00
davidxu
528c35bfb3 pthread API should return error code in return value not in errno.
Reviewed by: deischen
2003-09-25 13:53:49 +00:00
davidxu
c0197faefe If syscall failed, restore old sigaction and return error to thread. 2003-09-25 06:23:40 +00:00
davidxu
13f5fe3849 As comments in _mutex_lock_backout state, only current thread
can clear the pointer to mutex, not the thread doing mutex
handoff. Because _mutex_lock_backout does not hold scheduler
lock while testing THR_FLAGS_IN_SYNCQ and then reading mutex
pointer, it is possible mutex owner begin to unlock and
handoff the mutex to the current thread, and mutex pointer
will be cleared to NULL before current thread reading it, so
current thread will end up with deferencing a NULL pointer,
Fix the race by making mutex waiters to clear their mutex pointers.
While I am here, also save inherited priority in mutex for
PTHREAD_PRIO_INERIT mutex in mutex_trylock_common just like what
we did in mutex_lock_common.
2003-09-24 12:52:57 +00:00
marcus
7035863aec Grrr...add the Skinny alias code forgotten in the last commit. 2003-09-23 07:42:33 +00:00
marcus
e19a1e64d2 Add Cisco Skinny Station protocol support to libalias, natd, and ppp.
Skinny is the protocol used by Cisco IP phones to talk to Cisco Call
Managers.  With this code, one can use a Cisco IP phone behind a FreeBSD
NAT gateway.

Currently, having the Call Manager behind the NAT gateway is not supported.
More information on enabling Skinny support in libalias, natd, and ppp
can be found in those applications' manpages.

PR:		55843
Reviewed by:	ru
Approved by:	ru
MFC after:	30 days
2003-09-23 07:41:55 +00:00
davidxu
0414766399 Free thread name memory if there is. 2003-09-23 04:02:23 +00:00
davidxu
eed69ab82a Save and restore timeout field for signal frame just like what we did
for interrupted field.
Also in _thr_sig_handler, retrieve current signal mask from kernel not
from ucp, the later is pre-unioned mask, not current signal mask.
2003-09-22 14:40:36 +00:00
davidxu
b429e20750 Fix FPU state restoring bug by jumping to right position. 2003-09-22 14:34:02 +00:00
davidxu
96155432c1 Print waitset correctly. 2003-09-22 00:40:23 +00:00
marcel
265b2be119 Make KSE_STACKSIZE machine dependent by moving it from thr_kern.c to
pthread_md.h. This commit only moves the definition; it does not
change it for any of the platforms. This more easily allows 64-bit
architectures (in particular) to pick a slightly larger stack size.
2003-09-19 23:28:13 +00:00
marcel
5888af272d _ia64_break_setcontext() now takes a mcontext_t. While here, define
THR_SETCONTEXT as PANIC(). The THR_SETCONTEXT macro is currently not
used, which means that the definition we had could be wrong, overly
pessimistic or unknowingly right. I don't like the odds...

The new _ia64_break_setcontext() and corresponding kernel fixes make
KSE mostly usable. There's still a case where we don't properly
restore a context and end up with a NaT consumption fault (typically
an indication for not handling NaT collection points correctly),
but at least now mutex_d works...
2003-09-19 23:00:28 +00:00
marcel
ef50cc82f8 Stop using the setcontext() syscall to restore an async context.
Instead use the break instruction with an immediate specially
created for us.
2003-09-19 22:54:05 +00:00
des
b9a4363200 Ignore ECHILD from waitpid(2) (our child may have been reaped by the
calling process's SIGCHLD handler)

PR:		bin/45669
2003-09-19 11:33:03 +00:00
davidxu
85f4a8612b pthread api should return error code in return value, not in errno. 2003-09-18 12:19:28 +00:00
davidxu
e7f6efc66e Fix a typo. Also turn on PTHREAD_SCOPE_SYSTEM after fork(). 2003-09-16 02:03:39 +00:00
deischen
7332e364d0 Remove a comment that questioned why the size of the FPU
state for amd64 was twice as large as necessary.  Peter
recently fixed this, so the comment no longer applies.

Also, since the size of struct mcontext changed, adjust
the threads library version of get&set context to match.

FYI, any change layout/size change to any arch's struct
mcontext will likely need some minor changes in libpthread.
2003-09-16 00:00:53 +00:00
fenner
d41e114b7c From OpenBSD:
always widen the imputed netmask if it is narrower than the specified octets.
fixes a strange behaviour where inet_net_pton would always return 4 (bits)
for multicast addresses no matter how many octets were specified.

negotiated with Paul Vixie, original author of this function.

PR:		standards/53151
Submitted by:	Max Laier <max@love2party.net>
Optained from:	OpenBSD
2003-09-15 23:38:06 +00:00
ume
93c02adbfd Our getaddrinfo() and getnameinfo() are thread-safe but
some limitation.

Reported by:	Marc G. Fournier <scrappy@hub.org>
2003-09-15 04:52:15 +00:00
davidxu
1d188498a3 Fix bogus comment and assign sigmask in critical region, use
SIG_CANTMASK to remove unmaskable signal masks.
2003-09-15 00:08:48 +00:00
davidxu
8d7f2fb390 Fix a bogus comment, sigmask must be maintained correctly,
it will be inherited in pthread_create.
2003-09-15 00:06:46 +00:00
davidxu
42c958f29f 1. Allocating and freeing lock related resource in _thr_alloc and _thr_free
to avoid potential memory leak, also fix a bug in pthread_create, contention
   scope should be inherited when PTHREAD_INHERIT_SCHED is set, and also check
   right field for PTHREAD_INHERIT_SCHED, scheduling inherit flag is in sched_inherit.
2. Execute hooks registered by atexit() on thread stack but not on scheduler
   stack.
3. Simplify some code in _kse_single_thread by calling xxx_destroy functions.

Reviewed by: deischen
2003-09-14 22:52:16 +00:00
davidxu
40d912b465 When invoking an old style signal handler, use true traditional BSD style to
invoke signal handler.

Reviewed by: deischen
2003-09-14 22:42:39 +00:00
davidxu
b622332e18 Respect POSIX specification, a value return from pthread_attr_getguardsize
should be a value past to pthread_attr_setguardsize, not a rounded up value.
Also fix a stack size matching bug in thr_stack.c, now stack matching code
uses number of pages but not bytes length to match stack size, so for example,
size 512 bytes and size 513 bytes should both match 1 page stack size.

Reviewed by: deischen
2003-09-14 22:39:44 +00:00
davidxu
d08173b50b Avoid garbage bits in c_flags by direct assigning value.
Reviewed by: deischen
2003-09-14 22:33:32 +00:00
davidxu
b117b7ad58 If user is seting scope process flag, clear PTHREAD_SCOPE_SYSTEM bit
accordingly.

Reviewed by: deischen
2003-09-14 22:32:28 +00:00
davidxu
be9fb27b11 Check invalid parameter and return EINVAL.
Reviewed by: deischen
2003-09-14 22:28:13 +00:00
ru
cc9d2aeb39 Get rid of duplicates. 2003-09-14 13:41:59 +00:00
ru
db9666a32f mdoc(7): Fix common mistakes made in the SEE ALSO section. 2003-09-12 21:54:11 +00:00
ru
1edcd1b018 mdoc(7): Properly mark C headers. 2003-09-10 19:24:35 +00:00
roberto
3cab909501 Document the fact that send(2) can return EPIPE (like when a socket is not
connected).

PR:		docs/56683
Submitted by:	Chris S.J. Peron <maneo@bsdpro.com>
MFC after:	3 days
2003-09-10 19:19:49 +00:00
ru
421fdf157c Fixed -Wpointer-arith warning.
Submitted by:	Stefan Farfeleder
PR:		bin/56653
2003-09-09 23:50:57 +00:00
davidxu
707186a985 Original pthread_once code has memory leak if pthread_once_t is used in
a shared library or any other dyanmic allocated data block, once
pthread_once_t is initialized, a mutex is allocated, if we unload the
shared library or free those data block, then there is no way to deallocate
the mutex, result is memory leak.
To fix this problem, we don't use mutex field in pthread_once_t, instead,
we use its state field and an internal mutex and conditional variable in
libkse to do any synchronization, we introduce a third state IN_PROGRESS to
wait if another thread is already in invoking init_routine().
Also while I am here, make pthread_once() conformed to pthread cancellation
point specification.

Reviewed by: deischen
2003-09-09 22:38:12 +00:00
davidxu
f2dd9e6365 Add code to support pthread spin lock.
Reviewed by: deischen
2003-09-09 06:57:51 +00:00
ru
1c23ef339b mdoc(7): Use the new feature of the .In macro. 2003-09-08 19:57:22 +00:00
iedowse
2e1d99cc8a In the !MNT_BYFSID case, return EINVAL from unmount(2) when the
specified directory is not found in the mount list. Before the
MNT_BYFSID changes, unmount(2) used to return ENOENT for a nonexistent
path and EINVAL for a non-mountpoint, but we can no longer distinguish
between these cases. Of the two error codes, EINVAL was more likely
to occur in practice, and it was the only one of the two that was
documented.

Update the manual page to match the current behaviour.

Suggested by:	tjr
Reviewed by:	tjr
2003-09-08 16:23:21 +00:00
davidxu
521fd6195a Add small piece of code to support pthread_rwlock_timedrdlock and
pthread_rwlock_timedrwlock.
2003-09-06 00:07:52 +00:00
kan
3cec797a7b The caller is expected to set up PIC register corectly before
jumping to .cerror. This means .cerror has to be present in the
same module with its consumers, or bad things will happen.
2003-09-05 18:08:19 +00:00
roam
8106d775c1 Clarify that the second argument to accept() may be a null pointer if
no peer address information is desired.

PR:		56044
Submitted by:	Felix Opatz <felix@zotteljedi.de> and
		Bernd Luevelsmeyer <bdluevel@heitec.net>
MFC after:	1 month
2003-09-05 15:41:52 +00:00
tjr
b9a0be968f Remove an unused and incorrect prototype for _none_init(). 2003-09-05 09:01:31 +00:00
simon
2068a465a8 Move a sentence about the terminating \0 from the RETURN VALUES section
(where it didn't really belong), to the DESCRIPTION section.

English advice:	ceri
Requested by:	das
MFC after:	4 weeks
2003-09-04 20:36:54 +00:00
davidxu
82aeb9fc85 Add code to support barrier synchronous object and implement
pthread_mutex_timedlock().

Reviewed by: deischen
2003-09-04 14:06:43 +00:00
davidxu
480778ce65 Remove repeated macro THR_IN_CONDQ. 2003-09-04 07:46:26 +00:00
davidxu
962cbaebac Allow hooks registered by atexit() to run with current thread pointer set,
without this change, my atexit test dumps core.
2003-09-04 05:24:53 +00:00
peter
a51f611168 Sigh. I can't win anything. Use addq rather than addl with %rsp. 2003-09-04 00:31:45 +00:00
peter
15025c9c99 Apply same basic fix for getcontext(2) as for i386. Store the return
value for getcontext() in a preserved register rather than on the stack.
The second time around, the stack value would likely have changed so we
can't depend on it for the return value.
2003-09-04 00:29:12 +00:00
peter
1f62fb4402 Fix some minor whitespace botches 2003-09-04 00:26:40 +00:00
peter
cc367e4b54 Make getcontext(2) work on i386. It needs a small wrapper in libc
otherwise the return from the syscall stub for getcontext will pop off
the return value for the caller to the getcontext stub and it will appear
as though the setcontext() syscall returned instead of the getcontext().
The same bug exists on amd64, a fix is coming there too.

The bug can be demonstrated with this test code fragment:
main()
{
        ucontext_t top;

        if (getcontext(&top) == 0) {
                write(2, "PING!\n", 6);
                /* Cause a return value of 1 from getcontext this time */
                top.uc_mcontext.mc_eax = 1;
                setcontext(&top);
                err(1, "setcontext() returned");
        }
        write(2, "PONG!\n", 6);
        _exit(0);
}
2003-09-04 00:20:40 +00:00
deischen
919bc52171 Don't assume sizeof(long) = sizeof(int) on x86; use int
instead of long types for low-level locks.

Add prototypes for some internal libc functions that are
wrapped by the library as cancellation points.

Add memory barriers to alpha atomic swap functions (submitted
by davidxu).

Requested by:	bde
2003-09-03 17:56:26 +00:00