Commit Graph

626 Commits

Author SHA1 Message Date
Axel Dörfler
6de41102e5 * Replaced the broken BSD realpath() that is neither thread-safe nor POSIX
compliant with one that is both, and magnitudes faster at that, too.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31498 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-10 12:27:05 +00:00
Oliver Tappe
16d5c24e53 * merged 32bit-wchar_t branches of buildtools and haiku back into
the respective trunk

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31443 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-07 10:30:09 +00:00
Axel Dörfler
7af3465eb5 * Made set_timezone() argument const - it's not supposed to mess with it.
* Renamed time.c to time.cpp.
* set_timezone() now uses localtime_r() instead of localtime(), and will also
  no longer fail in case there was no timezone symlink before.
* Cleaned up OS.h header.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31371 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-02 14:07:46 +00:00
Axel Dörfler
d1084ff757 * Renamed fs_attr.c to fs_attr.cpp and cleaned it up a bit.
* Always use _kern_create_attr() in fs_write_attr(), or otherwise it might not
  be created when it should.
* Stippi special: fixed typo "in another words" -> "in other words" ("a" is
  singular, not plural).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31312 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-29 09:56:22 +00:00
Stephan Aßmus
181593ba0b * Properly document why fs_write_attr() does what it does.
* As even the author of fs_attr.c was trying to use fs_write_attr() in an
  unsupported way in the cp copy_attributes() implementation, try to be
  more forgiving and support writing attributes at an offset. The method is
  required to behave inconsistent in that replacing bytes at offset 0 is
  not supported as replacing bytes at any other offset. Writing at offset 0
  will clobber the existing attribute to stay compatible with BeOS.

NOTE: BFS itself still does not support writing attributes at an offset which
are withing the "small data section". To work around this problem, programs
which copy attributes in a loop must make sure that their buffer is large
enough that such "small data section" attributes require only one loop
iteration.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31309 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-29 09:08:43 +00:00
Axel Dörfler
3609af391d * Renamed _kern_reserve_heap_address_range() to _kern_reserve_address_range(),
and added a _kern_unreserve_address_range() as well.
* The runtime loader now reserves the space needed for all its areas first
  to make sure there is enough space left for all areas of a single image.
* This also fixes the final part of bug #4008.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31115 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-19 11:09:21 +00:00
Axel Dörfler
82db8a9e15 * Added an "unmapAddressRange" argument to the file mapping syscall. This is
the first part of making the runtime loader behave itself; it should already
  make Clockwerk run okay with any number of translators (even if not all of
  them will work yet).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31113 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-19 08:23:11 +00:00
Axel Dörfler
160f2d1081 * Added private header defining __gUmask which is now used everywhere where
needed.
* Some cleanup in Directory.cpp, and File.cpp.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31086 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-17 14:09:40 +00:00
Ingo Weinhold
58e784dfe6 Don't build compatibility.c for non-gcc2 anymore.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31043 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-14 11:10:36 +00:00
Jérôme Duval
59d67522ea added lrint and llrint functions to math.h
added generic implementations for ppc and m68k


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30945 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-02 20:24:18 +00:00
Oliver Tappe
78176019e6 * squashed a TODO in parsedate() about missing timezones - now both textual
(3-letter) and numerical timezones (e.g. -0700) are supported
This means that the workaround in mail_util.cpp of the mail kit could be
removed, but since I do not know if that should still support other versions
of BeOS, I have chosen to leave it alone.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30864 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-26 15:11:05 +00:00
Ingo Weinhold
bcfe344c53 * Made our struct stat POSIX compliant again -- the time_t fields have been
replaced by timespec fields. Via macros the structure is still source
  compatible with the old one.
* Introduced header <compat/sys/stat.h> that defines the old stat structure
  (as stat_beos) and conversion functions
* Introduced versions for [l,f]stat().
* Added symbol versions for BDirectory::GetStatFor() for sake of binary
  compatibility.
* BStatable::GetStat(): Renamed the old method, changed its parameter to
  stat_beos*, and and made it private. Added a new version (using up a
  reserved vtable slot). It remains source and binary compatible.
* BRefFilter::Filter(): Changed the struct stat* parameter to struct stat_beos*
  for sake of binary compatibility. This breaks source compatibility, though,
  which we can't help, since the class doesn't have reserved vtable slots.
* Fixed several issues with the stat structure change, mostly adjusted uses of
  BRefFilter.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30830 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-22 15:15:16 +00:00
Ingo Weinhold
544e3d2523 Commented out more unused glibc stuff. Scary...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30827 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-22 14:55:28 +00:00
Ingo Weinhold
ef3966e888 Added version scripts for the kernel, libroot, and libbe. ATM each has two
version nodes: *_BASE and *_1_ALPHA1.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30826 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-22 14:53:31 +00:00
Jonas Sundström
cb8f3e2698 More mipsel
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30621 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-03 22:41:38 +00:00
Ingo Weinhold
9073b0dccc Made _debuggerAssert()'s "message" parameter const. Fixes building with gcc4.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30502 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-30 12:21:20 +00:00
Ingo Weinhold
7be389053f Don't use exit() when compiling for the kernel.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30037 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-08 16:48:32 +00:00
François Revol
80e1f0e419 Fix error reporting to conform to the POSIX ttyname_r and ttyname.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29917 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-05 07:34:37 +00:00
Philippe Houdoin
23614f0aeb Another fix after /boot/beos -> /boot/system change.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29888 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-03 23:50:12 +00:00
Axel Dörfler
317bd7dda3 * Changed directory structure as suggested on the mailing list.
* Made the TimeZoneView less error prone, and also actually use Haiku code (the
  previous check didn't work since it used #if, not #ifdef).
* Also took the liberty to rename our boot loader to haiku_loader, since I had
  to update the nasm binary anyway. Updated the assembly sources to nasm 2.0.
* I haven't found where the synth location in the MIDI code is specified,
  though.
* Also, NetBootArchive, and FloppyBootImage haven't been updated yet. Will do
  so next.
* Some optional packages still put their license to beos/etc/licenses. I didn't
  update them yet, as we'll probably do so anyway at some point. Also, I think
  we might want to introduce a common/data/licenses instead for those.
* If you encounter any problems, please tell!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29876 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-03 09:02:44 +00:00
Ingo Weinhold
39d58e2f49 Experimental approach to tackle the problem with Be's negative error codes and
ported software:
* If the macro B_USE_POSITIVE_POSIX_ERRORS is defined the POSIX error code
  constants (ENOMEM, EINTR,...) will have positive values.
* Introduced the macros B_TO_{POSITIVE,NEGATIVE}_ERROR() which do convert a
  given error code to a positive/negative value.
* Added static library libposix_error_mapper.a that overrides all POSIX
  functions (save the ones I forgot to add :-)) directly meddling with error
  codes (having them as parameter or returning them) dealing with the
  positive<->negative error code conversions. The functions have hidden
  visibility, so they affect only the shared object they are linked into.
* So ideally all one has to do is to build a ported software with
  -DB_USE_POSITIVE_POSIX_ERRORS and -lposix_error_mapper and be good with
  respect to error code problems.
* Potential issues:
  - When mixing ported and Haiku native code, i.e. using Haiku native code in
    a ported software or using a ported library in a Haiku native application
    care must be taken to convert error codes where the two interface. That's
    what the B_TO_{POSITIVE,NEGATIVE}_ERROR() macros are supposed to be used
    for.
  - A ported static library can obviously not be linked directly against
    -lposix_error_mapper. The shared object linking a against the ported static
    library has to do that. The previous point applies when that causes mixing
    with Haiku native code.
  - When dependent ported libraries are used probably all of them should use
    the error mapping.

Comments welcome.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29653 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-22 15:43:03 +00:00
Ingo Weinhold
4c35c6b5e1 * _user_unblock_thread[s]() also set the user thread's wait_status, now. This
makes them more convenient to use, since the caller doesn't need to know the
  target threads' user thread structure.
* Adjusted the pthread rwlock implementation accordingly.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29578 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-18 01:53:06 +00:00
Michael Lotz
3e37362327 At least if we hit the boot volume override the hardcoded check for BFS. This
makes the Desktop work when booted from an iso only CD, but I agree with the
TODO to move those into the filesystem API.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29518 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-14 15:29:49 +00:00
Ingo Weinhold
80ece78534 Added private get_image_symbol_etc() that can recursively search for a symbol
(similar to how dlsym() works).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29356 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-02-28 18:50:40 +00:00
Jérôme Duval
e06359547c activated wfileops.c instead of wfilestubs.c, commented out mmap stuff (as in fileops.c)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29153 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-02-07 20:05:39 +00:00
Jérôme Duval
d5a6891975 * Patch from Olivier Coursiere: restore sFreeHeapSize in case of resize_area failure
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29013 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-01-25 18:13:49 +00:00
Stefano Ceccherini
6dcca60207 fix the build. Sorry for the trouble
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28999 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-01-23 21:54:34 +00:00
Stefano Ceccherini
4a7ad412f6 revert r28970, since they cause crashes. Still looking into it
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28997 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-01-23 14:05:12 +00:00
Axel Dörfler
78e1849576 * atomic_test_and_set() did actually not test if the lock was lost, and
would therefore not always work correctly.
* Minor cleanup, added return register for completeness.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28977 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-01-21 11:28:50 +00:00
Stefano Ceccherini
64f6abaa91 Imported some wide char functions from freebsd, adapted to the build, tried to integrate them with the glibc we are using. The mbtest supplied in ticket #2822 seems to work, without regressions. Please shout if there are issues.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28970 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-01-20 16:09:58 +00:00
Axel Dörfler
18f27bf19f * Added POSIX function strndup(), closing ticket #3309.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28939 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-01-18 20:27:12 +00:00
Salvatore Benedetto
b3e849c2ce * Adding libgen.h as a public header
* Implementing dirname and basename

I removed dirname from glibc/misc and reimplemented in order
to (hopefully) keep thing tidy.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28888 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-01-11 23:38:27 +00:00
Axel Dörfler
99fe8fb0f6 * "" is not really a good error description.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28879 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-01-11 14:19:20 +00:00
Axel Dörfler
d5ec380523 * Added siginterrupt() function, this closes ticket #3263.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28854 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-01-07 19:40:53 +00:00
Salvatore Benedetto
e4263eb78e * Uncommenting POSIX mkdtemp function. Tested.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28840 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-01-01 21:01:51 +00:00
Axel Dörfler
bf6bf2e36b * get_context() didn't quite do what it was supposed to be doing. Especially,
it was not guaranteed that this function returned a valid context even with
  low memory.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28826 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-12-27 22:12:08 +00:00
Oliver Tappe
b898cc3709 solved build dependency puzzle in regex.c:
* removed superfluous #include <config.h> which was protected by an #ifdef
  that evaluated to false - so the file never got included, but jam tried
  to locate it and usually failed, unless there happens to be a config.h
  in the current working directory. 
  This fixes a spurious dependency from regex.c to the config.h in 
  src/libs/iconv.h if you invoked jam from there.
* fixed two warnings by always including stdlib.h

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28639 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-13 16:23:04 +00:00
Ingo Weinhold
aa22a3cfda dlclose() also set the static error variable.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28579 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-09 18:19:46 +00:00
Ingo Weinhold
0c85bd054e * Reworked undefined symbol resolution in the runtime loader. Got rid of
the per-root-image breadth-first sorted image array. Instead we have a
  per-image hook function to resolve the symbols. The default function
  uses the sLoadedImages list directly, which is breadth-first sorted
  anyway. There's also a BeOS function for old-style symbol resolution
  and one for add-ons, which lacks a proper implementation yet (just
  uses old-style ATM).
* Made the dl*() functions POSIX compliant:
  - dlopen() does no longer use load_add_on(), but loads the object as a
    library. It also properly supports a NULL name, now -- the previous
    "_APP_" work-around did only work, if this soname was set on the
    program (unlikely for programs using this API).
  - Implemented RTLD_{GLOBAL,LOCAL}.
  - dlsym() looks up symbols properly now, i.e. not just in the given
    image, but breadth-first for an actual image or in load order for
    the global scope. It also supports the not-quite POSIX RTLD_DEFAULT
    and RTLD_NEXT extensions. Our RTLD_NEXT finds more symbols than in
    Linux (also in later dlopen()ed libraries), but that should be fine.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28568 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-08 22:40:56 +00:00
Ingo Weinhold
e10b4cace5 Added __arch_get_caller(). Correctly implemented for x86 only.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28567 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-08 22:09:28 +00:00
François Revol
da7dce9b35 This seems to fix building libroot on ppc... the *l versions aren't used.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28541 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-06 23:24:41 +00:00
Axel Dörfler
5074333ded * Updating glob() actually broke it, since Haiku does have broken mbrtowc(),
and wcrtomb() functions. I worked around the issue, and added a build
  warning so that we don't forget to change it back once we have working
  versions of those.
* This lets apps like "ftp", and "sftp" work again.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28531 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-06 11:26:01 +00:00
Ingo Weinhold
3cbd4a09f7 system() is supposed to return a waitpid() style exit status value.
wait_for_thread() doesn't provide that; use waitpid() instead.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28479 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-03 16:35:09 +00:00
Ingo Weinhold
19d40f9eb7 Moved the rld_export structure from <user_runtime.h> to
<runtime_loader.h>, since it isn't a kernel <-> userland interface.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28456 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-02 03:43:01 +00:00
Ingo Weinhold
2ef4a8b524 Moved the variable cv_factor from the text to the bss section.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28453 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-02 02:58:38 +00:00
Ingo Weinhold
8d41d0ee72 Spotted by "daste": When unlocking the mutex owner must be set to -1
also for error check mutexes, otherwise the next pthread_mutex_lock()
will fail.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28428 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-01 14:30:09 +00:00
Ingo Weinhold
3a39905b59 Implemented __freading(), __fpurge(), and fpurge().
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28397 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-10-31 13:02:40 +00:00
Axel Dörfler
6e036f0479 * Updated glob.h and its implementation to FreeBSD current (1.10, 1.27),
adapted them to work on Haiku.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28355 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-10-28 14:13:30 +00:00
Ingo Weinhold
f20ccdc461 Fixed some incorrect behavior pointed out in #2990:
* The pthread_mutex_*lock() family should return EDEADLK when re-locking
  an error-checked mutex.
* pthread_mutex_trylock() is supposed to return EBUSY, not
  B_WOULD_BLOCK.
* pthread_mutex_unlock() should return EPERM when the caller is not the
  owner. It used to print a message and try to unlock anyway.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28354 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-10-28 12:04:51 +00:00
Axel Dörfler
e2040be893 * Applied patch by Romain Picard: added support for the GNU extension dladdr(),
thanks!
* This closes ticket #2818.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28308 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-10-24 09:53:48 +00:00
Ingo Weinhold
bc3955fea5 Preparations for removing __BEOS__ from the compiler defines.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28305 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-10-23 21:46:26 +00:00
François Revol
d4dcbf95f6 - Fix build.
- make system_time() return something sensible until platform code works.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28271 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-10-21 21:23:55 +00:00
Stephan Aßmus
f73283cf6a When opening mails with slightly larger attachements in Beam, I noticed that
it was quite sluggish. When opening larger mails, like a 1.14 MB mail for
example, it could take almost half a minute until it was displayed. It turned
out that the offending thread was in strstr().
This is an implementation taken from Wikipedia (declared as public domain
there), which makes the mails open instantly. This usecase may have represented
a worst-case scenario for the previous implementation. It may be beneficial to
take a look at more of these string functions, but I am happy for now.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28172 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-10-16 15:31:58 +00:00
Oliver Tappe
e1e083d584 * added skipping of '0'-modified supported by glibc (formats are padded
with zeros anyway)
this fixes creation of unique file names in Beam under haiku


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28170 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-10-16 13:51:45 +00:00
Michael Lotz
39e9e0e43b Fix typo.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28120 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-10-15 08:08:31 +00:00
Michael Lotz
c2b295654c Initialize the parameters to NULL so that a later reload doesn't try to free
uninitialized memory. Fixes a crash on boot with a preloaded settings file
present that wasn't used before the boot device was available (like the vm
settings file).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28119 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-10-15 08:06:30 +00:00
Axel Dörfler
25174582be Fixed two problems recently introduced by korli and found by aldeck:
* When invalidating unused settings, we should remove the handle from the list
  before freeing it, or else the settings list will be corrupted.
* We should protect the safemode settings against being removed, or else they
  won't be availabe anymore after we mounted the boot device.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28033 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-10-13 13:38:01 +00:00
François Revol
9f5e12b6b3 - use asm_def.h and FUNCTION_END
- remove some dead ppc code


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28023 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-10-13 09:25:13 +00:00
François Revol
5bb2204e46 Enable and fix the asm memcpy(). It's far from optimized, but works now and fixes the build.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27998 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-10-12 18:07:47 +00:00
Ingo Weinhold
c73aeac11e We need to let the runtime loader call shared object termination hooks
from exit().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27991 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-10-12 12:26:27 +00:00
Jérôme Duval
3c4a3ce31c * correctly init ref_count on driver settings handles
* unload settings when ref_count is zero and boot device is available


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27969 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-10-11 14:58:12 +00:00
Axel Dörfler
2716cfd3d7 * Threw away the broken stat() vs. _stat() mechanism to allow for more fields
in struct stat.
* Instead, I followed Marcus' great idea and added a compatibility check in
  the runtime loader: now, R5 binaries (also shared libraries) are detected,
  and they get special versions for stat(), fstat(), and lstat() that return
  the smaller stat struct.
* However, I've disabled (in src/system/libroot/posix/sys/stat.c) using the
  larger stat field for now, as this breaks some of our optional packages.
  So until we rebuild them all, this shouldn't be enabled.
* This should now also be used for BeOS compatibility in libnetwork.so.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27961 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-10-10 22:13:05 +00:00
Ingo Weinhold
b18c9b97ae * Implemented x86 assembly version of memset().
* memset() is now available through the commpage.
* CPU modules can provide a model-optimized memset().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27952 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-10-10 18:43:46 +00:00
Ingo Weinhold
379ad6d037 * Moved the arch specific stuff in src/system/kernel/lib into arch/...
subdirectories. Also moved the x86 kernel arch_string.S there.
* Moved memcpy.c from src/system/libroot/posix/string into the
  arch/generic subdirectory.
* Dealt with the consequences of moving things around. Affected are also
  the boot loader and runtime loader builds.

Adjust the m68k and ppc parts, too, but only the x86 build is tested.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27947 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-10-09 23:47:01 +00:00
Stefano Ceccherini
026c75e91c add ctype-extn.c to the build. It contains the function versions of the is*** defines. Without this, bash 3 refuses to compile on haiku
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27946 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-10-09 14:58:45 +00:00
Ingo Weinhold
7867cf37df Increase the heap size in 64 KB steps. Was 4 KB before, which was a bit
slow for short-running, heap-intensive programs.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27925 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-10-08 14:05:47 +00:00
Ingo Weinhold
f711e9dc45 Use esi instead of ebp. The latter usually is the stack frame pointer --
using it for something else screws stack traces while being in such a
function.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27772 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-09-29 00:37:35 +00:00
Ingo Weinhold
8cc146385f Use the new <asm_defs.h> header in x86 assembly files. Particularly
added FUNCTION_END() calls for a good deal of functions. The respective
ELF symbols do now have a correct size.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27718 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-09-23 22:50:30 +00:00
Axel Dörfler
ca7cb625b9 * Implemented a (private for now) get_system_info_etc() call, that can retrieve
various system information.
* Implemented retrieving some VM stats via this call.
* The VM now maintains a page fault counter, and sets system_info::page_faults
  accordingly.
* Added a (pretty simple) "vmstat" command line app.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27597 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-09-17 16:27:17 +00:00
Jérôme Duval
645fa87a21 added lsearch and lfind
remove unknown infnanf and strtcopy functions


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27423 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-09-11 22:27:55 +00:00
Jérôme Duval
eabd7df4a2 added insque and remque
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27422 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-09-11 22:23:21 +00:00
Salvatore Benedetto
9c3feb120b * forgot to commit Jamfiles
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27418 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-09-11 15:06:47 +00:00
Salvatore Benedetto
f22e1421a4 * Adding sys/msg.h header and relative syscalls
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27416 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-09-11 14:52:35 +00:00
Axel Dörfler
43209917de * BDirectory::CreateDirectory() and CreateSymlink() now both use __gUmask to
correct the permission mask. This fixes bug #2670.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27414 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-09-11 12:25:05 +00:00
Ingo Weinhold
b27c9bd52f * env.c -> env.cpp
* Squashed TODO: Use a benaphore for locking to improve performance.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27360 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-09-07 15:28:39 +00:00
Jérôme Duval
ab2b993da9 added nexttoward()
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27349 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-09-06 15:00:33 +00:00
Jérôme Duval
bb97148298 added more posix functions
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27348 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-09-06 14:31:28 +00:00
Jérôme Duval
2eb280d3a8 added a few more math functions, rearranged some functions in math.h
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27339 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-09-05 23:21:33 +00:00
Jérôme Duval
aaec7603ab added matherr, lroundl and roundl
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27338 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-09-05 20:58:03 +00:00
Karsten Heimrich
89cfd54279 * revert r27322 and apply the patch provided by Salvatore
Thanks you!  :)



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27323 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-09-04 17:00:01 +00:00
Karsten Heimrich
754b706519 * calling receive_data with NULL as first argument(thread_id)
failed on Haiku, this makes e.g. painting in ArtPaint work

  Don't know if this is the best place to fix it though.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27322 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-09-04 16:07:11 +00:00
Jérôme Duval
04e088c3a9 I forgot that m68k build doesn't include long double versions of functions
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27307 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-09-03 18:59:12 +00:00
Jérôme Duval
27c3792d1e added random_r.c
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27278 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-09-01 20:26:40 +00:00
Jérôme Duval
59e23729f5 added towctrans
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27277 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-09-01 20:18:49 +00:00
Jérôme Duval
8a34e3d4de added getwchar and iofgetws
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27275 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-09-01 20:05:35 +00:00
Jérôme Duval
0ac2fa30a5 added gammal_r and lgammal_r private functions
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27274 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-09-01 19:54:55 +00:00
Jérôme Duval
9c91170f95 added fpclassifyl
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27272 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-09-01 19:37:23 +00:00
Jérôme Duval
88e8ee78db added s_signbitf.c for x86
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27259 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-08-31 22:52:54 +00:00
Ingo Weinhold
ce2a6a4bed Don't release the semaphore, if no one is waiting on the condition
variable. pthread_cond_broadcast() incorrectly returned an error
when no one was waiting.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27253 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-08-31 13:41:52 +00:00
Salvatore Benedetto
29fd670a1b * Updated license
* Removed extraneous tabs
* Implemented lldiv (#2688)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27250 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-08-31 10:40:58 +00:00
Axel Dörfler
8b97187793 * Adds the _kunlock_node_() syscall obviously used by p4. This should fix
ticket #2626.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27011 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-08-17 20:35:05 +00:00
Axel Dörfler
de4daffba0 * Fixed bug #2616, preparseDate() would clear the elements array beyond its
maximal size.
* Turned off debug output accidently enabled with the last commit.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27006 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-08-17 15:00:25 +00:00
Axel Dörfler
e6a9c269be * Style cleanup, no functional change.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27005 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-08-17 14:58:36 +00:00
Axel Dörfler
63c96ae5a5 * Added find directory constants B_{BEOS|COMMON|USER}_DATA_DIRECTORY, which
currently points to /etc for the system, and dedicated "data" directories
  for common/user (the system directory should get a dedicated "data", too,
  though).
* Added B_USER_CACHE_DIRECTORY (in config/cache).
* These additions were discussed some years ago, but I just had a good reason
  to use them :-)
* Coding style cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26990 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-08-16 11:05:59 +00:00
Axel Dörfler
6dc27eba0c * As requested by POSIX, we now have PTHREAD_STACK_MIN, and PTHREAD_KEYS_MAX
defined in limits.h.
* This closes ticket #2559.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26982 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-08-15 15:00:26 +00:00
Ingo Weinhold
a9d7be0708 * Implemented mprotect(). A vm_area does now have an optional array
specifying the protection of each page (4 bits per page).
* Added no-op implementation of posix_madvise().
* Replaced a few "addr_t size" parameters by "size_t size".


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26871 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-08-08 01:00:06 +00:00
Jérôme Duval
43619079f8 sManagedEnviron is already checked for NULL value in free_variables()
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26830 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-08-05 22:06:21 +00:00
Axel Dörfler
8169e6b4e6 * Patch by Andreas that adds sched.h, and sched_yield() to Haiku.
* This closes ticket #2568.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26820 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-08-05 17:54:14 +00:00
Axel Dörfler
c569fd76b4 * Coding style cleanup, pointed out by Andreas.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26815 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-08-05 13:57:14 +00:00
Axel Dörfler
272457553e * Renamed kernel_startup to gKernelStartup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26731 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-08-02 15:03:03 +00:00
Salvatore Benedetto
51daeb7147 - Fixed warnings
- Fixed deadlock in xsi_sem_undo - RecordUndo
- Fixed issue in xsi_sem_undo: if the semaphore set does not exist
anymore, ignore the request but do remove the process from the sUndoList,
which wasn't previously done.
- free() in ClearUndos was called with interrupts disabled
- when a semaphore set ends to exist, remove all it's sem_undo request as it's ID
will be reused in the future.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26727 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-08-02 11:30:55 +00:00
Axel Dörfler
ee091fc0cb * clearenv() did not return anything, but should have returned 0 for success.
* sCopied wasn't needed anymore due to the sManagedEnviron variable.
* Minor cleanup, added a description to copy_environ_to_heap_if_needed().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26722 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-08-01 17:58:04 +00:00
Axel Dörfler
06b4c67fa5 * Instead of just deleting the array, we have to delete its contents, too.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26720 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-08-01 15:08:06 +00:00
Axel Dörfler
cc6c784ae7 * Sean C. Farley made me aware that some of the possible solutions to clear
the environment would crash on Haiku. Added a small test application that
  just checks every one of those.
* Fixed env locking (in userland, you better check against B_INTERRUPTED).
* Made our code safe against an environ of NULL.
* There is now an additional sManagedEnviron that points to the environment
  our code actually managed; whenever an application overrides environ, we'll
  get aware of it with the next *env() function invocation, and will handle
  it adequately.
* Added non-POSIX clearenv() function.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26719 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-08-01 15:02:03 +00:00
Axel Dörfler
47ca7595ca First patch by Salvatore to implement XSI semaphores with a few changes
by myself:
* renamed xsi_do_undo() to xsi_sem_undo() (there is more to XSI than sems).
* Fixed coding style issues in sys/sem.h and xsi_sem.cpp.
* Added _kern_*() syscall prototypes to syscalls.h.
* Added a TODO in xsi_sem.cpp and xsi_semaphore.h about moving union semun to
  a shared header.
* Made the team::xsi_sem_undo_requests int32 - due to padding, it would have
  needed 4 bytes anyway; please always use specific types over int/short/long.
* xsi_sem_undo() now checks if it needs to do anything - the calls in team.cpp
  no longer needs to do this.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26676 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-29 12:03:41 +00:00
Axel Dörfler
eaf71fbdb6 * Build fix: coreutils had a replacement for dirfd().
* Made DIR argument const in dirfd().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26469 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-17 01:22:13 +00:00
Michael Lotz
d73327e274 Make dirfd() publically available. It used on other systems as well it seems.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26466 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-17 01:01:52 +00:00
Axel Dörfler
9c5c79ad86 * Made DIR definition private, and moved it into the new dirent_private.h
header.
* Added fields necessary to make it possible to retrieve more than one
  dirent from the underlying file system.
* Unless some app creates a DIR on its own to it to feed readdir(), this
  change should be binary compatible. If we find an application misbehaving,
  we can still make it a GCC4 only thing.
* fs_attr/fs_index/fs_query now all use readdir() directly (as that one
  contains the logic to iterate through a number of dirents in userspace).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26339 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-09 11:16:00 +00:00
Axel Dörfler
bb956ce2ea * Fixed coding style.
* Since there is no "Haiku license", I replaced that with a reference to the
  MIT license as usual.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26236 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-02 22:03:04 +00:00
Jérôme Duval
765ae3a785 Applied patch from Mika Lindqvist: This patch implements both strlwr() and strupr() functions in libroot and includes strupr() in kernel build.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26226 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-02 19:30:46 +00:00
Ingo Weinhold
478c7fe7e5 Also print free() info when wall checking is disabled.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26164 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-29 14:47:08 +00:00
François Revol
27fc711986 Fix gcc4 build.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26122 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-24 16:10:57 +00:00
Ingo Weinhold
2965c99fea * Changed the _kern_exec() and _kern_load_image() syscalls. They expect
a flattened argument/environment buffer now. This simplifies the work
  for the kernel a bit, since it can just copy the buffer and check
  whether it looks OK instead of messing around with individual strings.
  The runtime loader also gets a flattened array.
* Set the maximum size of the arguments/environment buffer to 128 KB.
  When more arguments are passed, we fail with a proper error code
  (instead of just truncating the arguments as before).
* On exec*() the first argument was silently replaced by the given path
  name, which is not correct.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26119 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-24 03:37:07 +00:00
François Revol
ee679412f7 Add missing s_fabs* from glibc-2.3.5.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26102 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-23 15:21:05 +00:00
Jérôme Duval
9f3408f86f build fix
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25869 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-08 20:34:49 +00:00
Michael Lotz
f5b3a6a796 * Initialize all static mutexes in the kernel through a MUTEX_INITIALIZER()
and remove the then unneeded mutex_init() for them.
* Remove the workaround for allowing uninitialized mutexes on kernel startup.
  As they are all initialized statically through the MUTEX_INITIALIZER() now
  this is not needed anymore.
* An uninitialized mutex will now cause a panic when used to find possibly
  remaining cases.
* Remove now unnecessary driver_settings_init_post_sem() function.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25812 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-05 23:19:27 +00:00
Ingo Weinhold
d46a010c43 Patch by Vasilis Kaoutsis: Added sigpause().
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25682 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-28 15:28:49 +00:00
Axel Dörfler
a411c76cd6 * Added pthread_attr_setscope(), and pthread_attr_getscope(). We only support
PTHREAD_SCOPE_SYSTEM which makes the implementation rather simple.
* This closed ticket #2242.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25628 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-23 11:24:40 +00:00
François Revol
74be35c78b Some more funny sysconf()...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25627 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-23 01:38:05 +00:00
François Revol
3a17a548da - factored out [f]pathconf().
- *pathconf() now uses statvfs and fs_info data when appropriate. It should also check for file type though, some only apply to directory or others.
- added confstr(_CS_PATH) with a sensible default.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25625 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-23 00:33:08 +00:00
François Revol
ca974ded95 Some more [f]pathconf() names, not yet handled. filesizebits returns 64 though.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25623 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-22 23:22:26 +00:00
François Revol
4f20b083aa Error in *conf() must set errno.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25622 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-22 23:04:11 +00:00
Ingo Weinhold
0f448d21e5 * Added vm_page_write_modified_page_range(), which is similar to
vm_page_write_modified_pages(), save that it only writes pages in the
  given range.
* Added vm_page_schedule_write_page_range() which schedules all modified
  pages in the given cache's range for writing by the page writer.
* Added _kern_sync_memory() syscall and the msync() POSIX function.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25620 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-22 21:51:12 +00:00
Ingo Weinhold
d129070196 Release the fork lock when _kern_fork() failed or otherwise we'll
deadlock when trying the next fork().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25600 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-21 23:13:27 +00:00
Jérôme Duval
269dbbdc5c fix ppc libroot build
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25590 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-21 20:45:09 +00:00
Ingo Weinhold
3021393e36 Let's pretend we support POSIX threads.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25588 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-21 00:03:09 +00:00
Ingo Weinhold
a8af2b6dda Some work on pthreads:
* Made the pthread_cond_t internals public. This is necessary to support
  process shared condition variables. Fixed initializer macro.
* Made the pthread_rwlockattr_t structure opaque.
* pthread_t is no longer typedef'ed to int. It's the pointer to the
  internal _pthread_thread structure.
* Removed __get_pthread(). pthread_self() can be used instead.
* No longer tunnel the pthread exit value through Haiku's thread exit
  value. We do have a separate field in the _pthread_thread structure
  for it, now.
* Handle detaching of threads correctly.
* pthread_rwlockattr_{g,s}etpshared() use the
  PTHREAD_PROCESS_{SHARED,PRIVATE} constants, now.
* Commented out yet unsupported structures (barriers, spinlocks).
* Rebuilt APR optional package. The pthread changes weren't binary
  compatible.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25582 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-20 20:43:28 +00:00
Ingo Weinhold
89d327d66e Added missing spwd::sp_lstchg field.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25560 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-19 02:16:12 +00:00
Ingo Weinhold
1fab7b919f Add a newline to the syslog message, if it was missing.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25556 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-18 23:06:30 +00:00
Ingo Weinhold
6b202f4e3d * Introduced new header directory headers/private/system which is supposed
to contain headers shared by kernel and userland (mainly libroot).
* Moved quite a few private kernel headers to the new location. Split
  several kernel headers into a shared part and one that is still kernel
  private. Adjusted all affected Jamfiles and source in the standard x86
  build accordingly. The build for other architectures and for test code
  may be broken.
* Quite a bit of userland code still includes private kernel headers.
  Mostly those are <util/*> headers. The ones that aren't strictly
  kernel-only should be moved to some other place (maybe
  headers/private/shared/util).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25486 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-14 03:55:16 +00:00
Ingo Weinhold
3ca1072d44 * Reimplemented pthread_once. The old one was neither thread-safe nor
particularly efficient.
* pthread_mutex implementation:
  - Removed the pthread_mutex_t indirection (the type was a pointer to
    the actual structure which was allocated on the heap), as it made
    sharing the mutex between processes impossible.
  - Removed the distinction between process shared and non-shared
    mutexes. Benaphores work just as well in shared memory, so we always
    use them.
* Fixed some static initializer macros. PTHREAD_COND_INITIALIZER is
  still broken, since it doesn't work in C code.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25481 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-13 01:50:54 +00:00
Ingo Weinhold
b4e5605e0a * unsetenv() was moving too much memory, thus corrupting the data after
its allocation.
* Added TODO to use a benaphore.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25478 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-12 20:48:03 +00:00
Ingo Weinhold
7c3137b98b * reader_count was not incremented when a waiting reader was woken up.
* Added comment clarifying the use of reader_count and writer_count.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25474 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-12 17:22:16 +00:00
Ingo Weinhold
370602bff6 Added pthread rwlock support.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25470 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-12 13:56:11 +00:00
Ingo Weinhold
dd6eebabfe Use the [un]defer_signals() functions to prevent signal delivery while
being in the allocator. Fixed bug #1965.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25452 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-11 16:30:22 +00:00
Ingo Weinhold
a636a33926 Use the new B_ABSOLUTE_REAL_TIME_TIMEOUT. Fixes pthread_cond_timedwait()
and pthread_mutex_timedlock() which were waiting system time relative
although their timeout parameter is Epoch relative.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25435 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-10 21:44:03 +00:00
Ingo Weinhold
899aa8e1f6 Moved setjmp() to sigsetjmp.S for ppc and m68k, too. Should fix the
kernel build. Haven't tested it though.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25431 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-10 18:10:15 +00:00
Ingo Weinhold
eb1a8c446e siglongjmp() calls __longjmp_return() also on x86, now. This resets the
signal mask as required. and also makes my recent return value fix
unnecessary, since __longjmp_return() already does that.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25430 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-10 18:05:41 +00:00
Ingo Weinhold
ad7ff929dd Reimplemented setjmp(). It no longer offsets the caller's esp.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25428 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-10 17:16:09 +00:00
Ingo Weinhold
c306892e40 Fixed my fix. It would always return 1 now.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25427 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-10 17:10:15 +00:00
Ingo Weinhold
e4d9ef0e7c setjmp() must return 1 when a 0 value has been passed to longjmp().
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25398 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-09 18:22:01 +00:00
Ingo Weinhold
ec5867990b I broke pthreads in r25390. The thread pointer was passed in the wrong
argument.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25396 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-09 15:05:17 +00:00
Ingo Weinhold
f7cc12b389 Implemented pthread_attr_{g,s}etstacksize(). Also added commented-out
prototypes for the missing pthread_attr_*() functions.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25390 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-09 01:36:49 +00:00
Ingo Weinhold
4c49f2056b * Changed _kern_spawn_thread() and create_thread(): Instead of individual
arguments they get a single thread_creation_attributes structure now.
* Added stack_address and stack_size to thread_creation_attributes,
  which allow to specify the stack size or the stack to be used for the
  new user thread.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25389 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-09 01:32:36 +00:00
Ingo Weinhold
f23d0a6242 Implement shm_open() and shm_unlink(). The shared memory objects are
simply created as files in /boot/var/shared_memory/. The Bootscript
clears the directory.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25374 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-08 13:42:33 +00:00
Ingo Weinhold
3dfe682f55 * Added some padding to the sem_t structure.
* Changed the semantics of unnamed semaphores. Before parent and child
  of a fork() would always share an earlier created semaphore. Now we do
  that only, if the "shared" parameter of sem_init() was true. That's
  still not quite the behavior Linux and Solaris have, but should be
  perfectly fine with how reasonable code would use the API.
* There's a global table for shared unnamed semaphores now. ATM a
  semaphore is leaked when no one explicitly destroys it (just as with
  named sems).
* Enforce per-team and global semaphore number limits.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25362 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-08 01:39:49 +00:00
Ingo Weinhold
01b1098795 * Fixed some misunderstanding regarding the _POSIX_* macros. They are
not supposed to be passed to pathconf() or sysconf().
* Added POSIX semaphore related macros.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25361 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-08 01:27:31 +00:00
Ingo Weinhold
e8f1b18ec2 Clear O_EXCL, if O_CREAT is not given.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25343 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-07 12:03:25 +00:00
Ingo Weinhold
98e6713172 * Moved realtime_sem.{cpp,h} into new posix subdirectory.
* Renamed the old kernel_posix[_arch...].o to kernel_lib_posix...


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25336 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-06 23:16:04 +00:00
Ingo Weinhold
5142c2ac86 Added support for POSIX semaphores (the ones from the XSI extension
Realtime option group). The implementation should be complete, but is
totally untested yet.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25326 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-06 03:39:36 +00:00
Axel Dörfler
2239c25b29 Fixed warnings.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25289 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-02 12:39:17 +00:00
Ingo Weinhold
0c615a01ae * Removed old mutex implementation and renamed cutex to mutex.
* Trivial adjustments of code using mutexes. Mostly removing the
  mutex_init() return value check.
* Added mutex_lock_threads_locked(), which is called with the threads
  spinlock being held. The spinlock is released while waiting, of
  course. This function is useful in cases where the existence of the
  mutex object is ensured by holding the threads spinlock.
* Changed the two instances in the VFS code where an IO context of
  another team needs to be locked to use mutex_lock_threads_locked().
  Before it required a semaphore-based mutex implementation.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25283 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-01 22:07:36 +00:00
Ingo Weinhold
6bf15ffcdc * Changed macros that enable tracing for individual components from
defined/undefined to numeric values (0 for undefined). This allows for
  trace levels.
* Set SYSCALL_TRACING_IGNORE_KTRACE_OUTPUT default to 1, since this is
  what one usually wants.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25213 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-27 14:24:18 +00:00
François Revol
e65c298c0e Add memrchr for ppc and m68k too. Please don't forget other archs when adding stuff :P
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25156 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-25 12:22:11 +00:00
Ingo Weinhold
fb913b19be Added POSIX functions posix_openpt(), grantpt(), ptsname(), and
unlockpt(), which provide a portable way of opening a pty.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25134 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-24 21:29:13 +00:00
Jérôme Duval
9091f4469b added pthread_sigmask based on sigprocmask()
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25085 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-20 16:56:39 +00:00
Ingo Weinhold
f694f63e2b * Moved private passwd/group/shadow passwd limit constants from
<libroot_private.h> to <user_group.h>.
* Added support in the registrar for adding and modifying users.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25040 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-19 00:10:51 +00:00
Ingo Weinhold
25010b8723 Updated rand.c with a newer version from FreeBSD (version 1.17). This
also removes the advertising clause.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25023 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-18 14:24:10 +00:00
Ingo Weinhold
7727e08e5f Added experimental public API get_port_message_info_etc(). It is similar
to port_buffer_size_etc(), but returns the info through a structure,
which also identifies the sender (uid, gid, team ID) of the message.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25003 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-17 17:46:02 +00:00
Ingo Weinhold
a94ce1c912 * Reorganized the passwd and group support: A dedicated thread in the
registrar provides access to the DBs via a port message based
  protocol. The functions in libroot just ask the registrar now.
* Added Linuxish shadow passwd support. No putspent() though -- we'll
  provide private functions.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25002 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-17 16:19:18 +00:00
Axel Dörfler
f127ebfd93 * Replaced the previous pthread_key implementation with a lockless one
that does not rely on the Be API TLS anymore, and is also more compliant
  with respect to the lifespan of the key specific values.
* It supports up to 256 different keys, which is equivalent of the solution
  that FreeBSD offers.
* The main thread now also gets a pthread_thread structure.
* Reenabled the POSIX suite test pthread_key_delete_2-1 as we now pass it.
* This also fixes bug #1642.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25000 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-17 13:44:39 +00:00
Axel Dörfler
ef4a3227fa * If there is no handler, we must not try to remove it from the linked list.
* This fixes bug #1644 again.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24998 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-17 11:55:04 +00:00
Jérôme Duval
6112fe9a8d added memrchr and dirname
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24985 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-16 18:49:23 +00:00
Ingo Weinhold
b9f23a3497 Moved KMessage from libbe to libroot.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24984 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-16 17:55:55 +00:00
Ingo Weinhold
9b293bf653 mmap() was a little strict: The length parameter need not be page
aligned. It shall be rounded up by the implementation.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24967 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-15 14:22:50 +00:00
Ingo Weinhold
3cf7ecd1e4 * Added <sys/mman.h> header. It declares only mmap() and munmap() yet
and defines the macros needed by them.
* Renamed syscall sys_vm_map_file() to _kern_map_file() and changed the
  path to an FD parameter. Changed vm_map_file() accordingly and
  adjusted the kernel ELF loader and the runtime loader.
* Added syscall _kern_unmap_memory().
* Added bool unmapAddressRange parameter to vm_create_anonymous_area()
  and map_backing_store(). If true and the address specification is
  B_EXACT_ADDRESS, all areas in the specified address range will be
  deleted (unless an area is covered only partially).
* Introduced B_SHARED_AREA flag, which is set on areas that have been
  created by {vm,_user}_map_file() with REGION_NO_PRIVATE_MAP. When
  fork()ing those areas won't be copied CoW, but rather be cloned. This
  is needed for mmap() MAP_SHARED.
* {vm,_user}_map_file() also accept an FD argument < 0, in which case an
  anonymous area is created.
* Implemented mmap() and munmap(). Currently there's the restriction
  that we can't partially unmap areas. Otherwise the functions should be
  rather compliant. We also support the non-POSIX extension
  MAP_ANONYMOUS.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24964 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-13 22:52:11 +00:00
François Revol
ebf8c71d74 Fix warnings about missing protos.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24961 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-13 17:52:41 +00:00
Axel Dörfler
b9fe86d2d7 * Added pthread_setconcurrency(), and pthread_getconcurrency() functions.
* Since we use a 1:1 mapping, they don't do anything besides remembering the
  level set, though.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24855 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-07 10:57:01 +00:00
François Revol
038ed3d1f2 Add _SC_PAGE_SIZE sysconf().
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24850 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-07 01:08:18 +00:00
Ingo Weinhold
6e36a49e62 * Added _kern_create_pipe() syscall, creating a pipe as an entryless
FIFO. Reimplemented pipe() to use it.
* pipefs is no longer mounted. Will remove the superfluous code soon.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24823 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-06 02:49:12 +00:00
Ingo Weinhold
7ffafac8d7 * Reorganized the FS interface a little:
- Moved most file_system_module_info hooks into separate structures.
    Those that operate on mounted volumes to fs_volume_ops, those
    operating on a vnode to fs_vnode_ops.
  - Got rid of the fs_volume, fs_cookie, fs_vnode typedefs. We use void*
    again.
  - Instead of a void* volume and node cookie hooks are passed a
    fs_volume and fs_vnode structure pointer, which contain the cookie
    and an ops pointer (fs_volume a few more things).
  - The VFS {new,publish,get,...}_vnode() functions take a fs_volume*
    instead of the volume ID. So does vfs_get_fs_node_from_path().
  - Added type and flags arguments to publish_vnode() and the
    get_vnode() hook and removed the type argument from lookup() hook.
    Added vnode::type using formerly unused bits to store the node type.
    Simplified a few things in the VFS due to the now always available
    node type.
  - Added fs_volume_ops::{create,delete}_sub_vnode() and
    fs_vnode_ops::get_super_vnode() hooks. They are used to support file
    system layers, e.g. allowing to extend an FS not supporting BeOS
    attribute with attribute support. Needs some more work in the VFS.
  - Added fs_vnode_ops::create_special_node() hook for creating special
    nodes (e.g. FIFOs).
* Adjusted the built-in file systems and BFS according to the interface
  changes. Removed all other FSs from the image for the time being.
  We'll see whether further API changes are necessary before porting
  them.
* Adjusted the bfs_shell accordingly.
* Implemented create_special_node() in rootfs to support special nodes.
* Added support for FIFOs:
  - Added syscall _kern_create_fifo() (used by mkfifo()), which creates
    a special node (type S_IFIFO) in the respective file system.
  - When a special node is published the VFS creates a respective sub
    node. Currently only FIFOs are supported.
  - Added a little support for FIFO subnodes by using functionality from
    the pipefs.
  - Added mkfifo to the image. It can create FIFOs in the rootfs, but
    the FIFOs aren't really usable ATM, since they still work like
    pipes, i.e. readers and writers need to have them open at the same
    time.
* Some smaller changes in the VFS:
  - Made the *_CALL macros nicer to use (vargs).
  - Refactored FS entry lookup into new function lookup_dir_entry().
  - create_vnode() no longer just calls the FS create() hook. First it
    looks up the entry and uses open_vnode(), if it already exists. This
    is necessary for two reasons: 1) The FS might not support create()
    while still allowing to open() entries. 2) When the FS has other
    layers on to of it (or the respective node) it might not be
    responsible for opening the node.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24816 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-05 23:05:16 +00:00
Stephan Aßmus
42014658ad Applied patch by James Woodcock:
* Implemented POSIX getpagesize() function in libroot.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24763 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-03 08:50:56 +00:00
Karsten Heimrich
e1a5b29760 * gcc4 build fix
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24756 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-02 19:17:59 +00:00
Ingo Weinhold
0931d2f309 Use the thread-safe getpwuid_r() instead of getpwuid().
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24751 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-02 15:09:50 +00:00
Ingo Weinhold
f8cb30712e * Replaced the dummy implementations of the <grp.h> and <pwd.h>
functions by ones reading /etc/{group,passwd}.
* Added quasi-standard getpwent_r() and getgrent_r().
* Added _SC_GETGR_R_SIZE_MAX and _SC_GETPW_R_SIZE_MAX sysconf()
  constants.
* Moved initgroups() and getgrouplist() definition to grp.cpp. They use
  the same backend as the <grp.h> functions.
* Set the permissions of files created by the build system to what they
  should be on the image (executables: 755, others: 644). Otherwise only
  root could do anything under Haiku.
* Added build system variables HAIKU_ROOT_USER_NAME and
  HAIKU_ROOT_USER_REAL_NAME to customize name and real name of Haiku's
  root user.
* Added build system rules AddUserToHaikuImage and AddGroupToHaikuImage
  for adding additional users and groups (by default only root user and
  group and a "users" group are created).
* Adjusted BIND port and coreutils config.h files according to what
  features have become available.
* Fixed HAIKU_DOCUMENTATION_OBJECT_DIR definition. Untested, but it used
  a wrong variable name before.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24750 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-02 14:02:52 +00:00
Axel Dörfler
c41a74e8f3 pthread_detach() no longer fails, as we currently have all threads
detached. We would need to have a hash that contains the thread data to 
be able to comply with the specs AFAICT.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24718 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-01 12:17:02 +00:00
Axel Dörfler
10f0fc8f20 * Implemented sigwait().
* Not sure if it works as intended, as the specs are a bit vague.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24717 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-01 12:15:14 +00:00
Axel Dörfler
c80e610789 * Added start of an implementation of pthread_cancel().
* Implemented pthread_setcanceltype(), pthread_setcancelstate(), and
  pthread_testcancel().
* In the previous commit, I also made pthread_private.h self-contained.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24710 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-03-31 18:49:19 +00:00
Axel Dörfler
a635399b07 * Rearranged pthread thread support a bit: there is now a pthread_thread
structure that is attached (via TLS) to each pthread.
* Implemented support for pthread_cleanup_{push|pop}().
* I haven't really been able to test these changes, yet, though.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24704 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-03-31 15:10:00 +00:00
Ingo Weinhold
360be1fc45 * Implemented support for chroot:
- Added a "root" vnode to the io_context. It is used for resolving
    paths and converting nodes to paths instead of sRoot. Some more
    passing around of io_context structures was necessary.
  - Introduced a new lock sIOContextRootLock to protect
    io_context::root. The current uses of io_context::io_mutex
    (put_vnode(), remove_vnode() while holding it) looked too suspicious
    to use that mutex in vnode_path_to_vnode().
  - Added _kern_change_root() syscall and chroot() libroot function.
  - Added chroot coreutils program to the image. Funnily it seems to be
    much easier to set up a little jail than under Linux (just copy
    bash and libroot.so into respective subdirs; mount another pipefs
    if you want pipe support).
    With Haiku allowing direct access to directories via inode IDs
    jailing is obviously not very secure at the moment.
  - Added /var/empty to the image. It will be the chroot target for ssh.
* Changed vfs.cpp:get_cwd() so that the io_context::io_mutex is no
  longer held when calling dir_vnode_to_path().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24673 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-03-30 05:59:54 +00:00
Ingo Weinhold
290946ce80 * Implemented some basics for supplementary groups support:
- The kernel stores the group IDs in the team structure. They are
    correctly inherited on fork() and load_image_etc().
  - Implemented getgroups() for real, i.e. it retrieves the groups
    associated with the process.
  - Implemented setgroups(), initgroups() and (the BSDish)
    getgrouplist(). The latter two read the group information from the
    "group database" /etc/group (if existing).
  - Change the BIND port config, since we do have getgrouplist() now.
* The set-uid feature was broken when the path to the executable was
  relative, since we used stat(), which, in the kernel, uses the kernel
  IO context.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24669 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-03-30 00:08:13 +00:00
Ingo Weinhold
29674ea8cb Patch by Vasilis Kaoutsis:
* Check against maximum baud rate in cfset{i,o}speed().
* Changed some functions comments to doxygen style.
* Sorted speed macros in termios.h.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24647 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-03-29 12:52:10 +00:00
Ingo Weinhold
071f9c3aa2 Build configurations shouldn't be done in svn controlled files, so I
finally created a solution to avoid that: Header files that contain
configuration settings (and nothing else) go to build/config_headers.
To change settings, create a directory build/user_config_headers (which
is ignored by svn), copy the respective header there and modify it at
your leisure. Currently only tracing_config.h has been moved to the new
location, but more files will follow eventually. It is also recommended
to move optional macro definitions in Jamfile (as for BFS) to a config
header instead; the build system will then automatically rebuild on
changes.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24611 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-03-27 22:01:38 +00:00
Ingo Weinhold
6638711aa9 execvp() also needs to verify that an entry it found in the path is a
file. It would try to execute directories before (#1963).



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24599 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-03-26 23:43:35 +00:00
Ingo Weinhold
070557e510 Fixed my previous execvp() endless loop fix, which would always cause
an infinite loop.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24569 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-03-25 04:10:14 +00:00
Ingo Weinhold
0343e0753a execvp() was looping endlessly if PATH contained empty entries.
Reorganized the loop so that this won't happen anymore.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24568 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-03-25 03:46:08 +00:00
Ingo Weinhold
83c2cae69d Implemented execvp() for real.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24560 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-03-24 20:32:20 +00:00
Axel Dörfler
5e2ef462ec * Got rid of the duality of FS_WRITE_STAT_* vs. B_STAT_* flags (removed
the former ones).
* Removed extraneous white space.
* net_server settings are now also updated when the size of the 
  file changed.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24552 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-03-24 12:04:47 +00:00
Ingo Weinhold
2754fa8772 bcopy() is supposed to be overlap-save.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24525 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-03-22 18:13:42 +00:00
Ingo Weinhold
5bf0362724 Added TODO.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24492 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-03-20 13:33:35 +00:00
Ingo Weinhold
8560d1885b * The runtime_loader's test_executable() no longer analyzes the
executable permissions of the file by hand. We use _kern_access()
  instead, which also handles the root case correctly.
* The user and group arguments of test_executable() aren't needed any
  longer.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24483 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-03-20 01:45:00 +00:00
Axel Dörfler
c2383f9c82 * Replaced our string compare functions (and memcmp()) with versions
that actually work correctly (and treat the data as unsigned 
  characters).
* This fixes bug #724.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24458 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-03-19 08:45:08 +00:00
Ingo Weinhold
62319d069e Commented out real-time signal related stuff (SA_SIGINFO, waitid()) to
prevent "configure" scripts from thinking we do actually support it.
Having real-time signals would be nice though (cf. #1935).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24444 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-03-18 17:33:03 +00:00
Ingo Weinhold
1b32947d3f * Aligned the semantics of the read_symlink() FS module hook with the
readlink() function. It is no longer required to null-terminate the
  string, shall not fail, if the buffer is too small, and shall return
  the length of the string actually written into the buffer.
* Adjusted rootfs, devfs, and bfs accordingly. Also adjusted their
  read_stat() hooks to return the correct symlink length in st_size.
* Our readlink() does now comply to the standard (and BeOS).
  Additionally if the buffer is big enough it is nice to non-conforming
  apps and null-terminates it.
* BSymLink::ReadLink() explicitly null-terminates the string now.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24425 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-03-17 21:37:40 +00:00
François Revol
e0b47058e2 Missing include... at least for gcc4.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24365 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-03-11 21:53:40 +00:00
Ingo Weinhold
7cee6a817b We only support real time timers. Pretending to support virtual timers
only gets the caller into trouble, since then another signal should be
sent.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24363 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-03-11 21:27:00 +00:00
Ingo Weinhold
4eb3560949 * Added real, effective and saved set- user and group IDs to the team
structure. They are properly inherited and updated on
  fork(), load_image(), and exec().
* Implemented the get[e]{u,g}id(), set[[r]e]{u,g}id() family for real.
* getgroups() also calls the kernel now, but only returns the effective
  group ID. Supplementary groups support is still missing.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24359 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-03-11 17:12:02 +00:00
Ingo Weinhold
4b7baaba0f Added optional kernel tracing for the userland memory allocator.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24356 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-03-11 01:35:30 +00:00
Ingo Weinhold
32da50fafb Allow setting the local to "C" (i.e. not changing it at all). This makes
programs happy, that do that unconditionally (e.g. some Perl test).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24334 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-03-09 17:47:52 +00:00
Axel Dörfler
d401b8f030 * _rtDebugFlag is supposed to default to true (is usually only used when
DEBUG is defined, anyway). This fixes bug #1892.
* _debugPrintf() and _sPrintf() are supposed to be silent when _rtDebugFlag
  is false.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24243 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-03-05 19:41:05 +00:00