Commit Graph

686 Commits

Author SHA1 Message Date
François Revol
ceee0a32a4 Fix warning.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39328 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-06 20:39:48 +00:00
Ingo Weinhold
e5d4255933 Init AtExitInfoBlock::fFirstUnused in the constructor. Probably fixes #6793.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39324 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-06 13:08:04 +00:00
Ingo Weinhold
85f9496a24 Implemented __cxa_atexit() and __cxa_finalize() which are required by the
Itanium ABI. Whether __cxa_atexit() really works for associating hooks with
DSOs has not been tested yet, as our compiler doesn't use the function.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39298 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-04 16:21:20 +00:00
Ingo Weinhold
b502275bc8 exit.c -> exit.cpp
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39295 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-04 11:07:01 +00:00
Ithamar R. Adema
18b48221c9 * don't mess with the stack before storing the register state :$
This finally makes KDL fully usuable on the ARM port!



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39015 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-19 23:11:57 +00:00
Ithamar R. Adema
7889c39de4 * Fixup longjump too... One step closer to a working KDL...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39002 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-18 14:00:17 +00:00
Ithamar R. Adema
a9de9aea54 * Fix atomic_get :$
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39000 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-18 12:39:59 +00:00
Ithamar R. Adema
60beb9c01e * Fixup atomic calls; currently only minimally tested on __ARM_ARCH__ < 6
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38999 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-18 12:10:16 +00:00
Ithamar R. Adema
a85c91d6f0 * Fix setjmp/jmpbuf_t size so we can finally get to the KDL prompt
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38993 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-18 00:50:59 +00:00
Oliver Tappe
72cf60a534 * replace glibc-base wcwidth() and wcswidth() with the one from
Bruno Haible's libunistring, which seems to work just fine

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38936 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-10 17:49:09 +00:00
Philippe Houdoin
20e654cab0 unsetenv() should remove *any* occurence of name=value.
As with putenv() both value and name can be modified afterwise in our 
back, multiple occurence of the same name is a possibility.
Fix #6706. 


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38904 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-09 09:09:01 +00:00
Philippe Houdoin
5b2ed54046 Fix the fix: sleep() should return *remaining* seconds.
Closed #6707.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38903 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-09 08:28:46 +00:00
Philippe Houdoin
82539c6155 sleep() remaining time was returned in microsecond, not second.
Fix #6707.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38902 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-09 07:19:41 +00:00
Scott McCreary
e86eb77b1b Patch from kaliber to a the glibc strtold implentation.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38710 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-18 16:42:59 +00:00
Oliver Tappe
6a5dacaa3c part1 of fixing #6599:
* protect against invocations of ctype-macros/-functions with negative
  character indices by mirroring the corresponding values at negative
  array indices (the legal access range of __ctype_b is now [-128..255])


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38708 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-18 15:55:42 +00:00
Oliver Tappe
338ddd836f Closing #6499:
* add missing getsubopt() POSIX-function
* added corresponding test


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38650 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-14 18:43:24 +00:00
Oliver Tappe
86932f41cc Try to fix #6581:
* avoid trying to overwrite values of a constant structure when
  updating the numeric locale data values used by glibc


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38623 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-12 17:24:38 +00:00
Oliver Tappe
ccee6057f0 * fix wrong signedness in values put into global 'timezone' variable,
the POSIX specs are a bit vague on this (to say the least)

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38606 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-11 18:34:48 +00:00
Axel Dörfler
1e0617da2e * dladdr() apparently should work on any symbol, not just functions. This
closes bug #6491.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38373 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-26 13:49:14 +00:00
Oliver Tappe
dbe1e23aa8 Optimised passing around of timezone a bit
* _kern_[sg]et_timezone() now accepts/passes out the timezone name, too
* adjust Time preflet and clockconfig to pass the timezone name into the kernel
  when calling _kern_set_timezone()
* ajust implementation of tzset() to fetch the timezone name from the kernel
  via _kern_get_timezone() instead of reading 'libroot_timezone_info'
* the Time preflet no longer writes 'libroot_timezone_info'


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38164 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-16 22:01:28 +00:00
Oliver Tappe
560b10ff88 Implement tzset(), gmtime(), localtime() and mktime() on top of ICU
* no longer keep a separate time-backend, since the implementation needs to
  access (data of) the locale backend anyway
* moved more stuff from localtime_fading_out.c to localtime.cpp
* added respective tests to locale_test
* added two more tests copied from glibc, test_time.c and tst-mktime.c


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38162 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-16 21:14:23 +00:00
Jérôme Duval
5091a866ec To be validated as part of bug #6386. Update glibc regex to 2.11, headers/posix/regex.h included. This imposes some changes in some of our sources using the regex.h,
mostly bin tools and mail kit. The use of __USE_GNU macro is needed for instance when the expected regex implementation is the GNU one.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38031 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-11 16:49:58 +00:00
François Revol
3d08ac9237 Add the fmemopen() and open_memstream() POSIX extensions to libroot. Those can be used to build FILE pointers to in-memory buffers, a possible use would be to make resources available to ported applications. Untested.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37997 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-10 09:56:13 +00:00
Oliver Tappe
562ccb03cc * introduced stubbed TimeBackend to libroot, which will contain implementations
of localtime(), gmtime() and mktime()
* implemented tzset() to read the required info from libroot_timezone_info

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37935 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-05 21:50:26 +00:00
Oliver Tappe
2cb26c0ab0 * moved ErrnoMaintainer into its own header to be reusable.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37931 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-05 21:41:29 +00:00
Oliver Tappe
28bedeb547 Applied a patch by MrSunshine that adds modfl() - thanks!
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37904 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-04 15:46:33 +00:00
Oliver Tappe
7e965f506d More consolidation of timezone code:
* dropped DaylightSavingTime from real_time_clock code in kernel, it was
  never really being used for what it meant (and just being referred to by
  gettimeofday(), which put a different meaning to it
* adjusted the syscalls get_timezone() & set_timezone() as well as their callers 
  accordingly
* got rid of get_rtc_info() and rtc_info struct in kernel, as it was only
  being referred to by the FAT add-on and that one (like gettimeofday()) put a
  different meaning to tz_minuteswest. Added a comment to FAT's util.c
  showing a possible solution, should the hardcoded GMT timezone pose a problem.
* fixed declaration of gettimeofday() to match POSIX base specs, issue 7
* changed implementation of gettimeofday() to not bother trying to fill struct
  timezone - it was using wrong values before, anyway.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37888 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-03 23:02:57 +00:00
Oliver Tappe
80ac9aef07 * corrected the copyright header, as that file no longer contains what
the copyright header refers to

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37882 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-03 17:48:48 +00:00
Oliver Tappe
96ac47e312 Made some progress with consolidation of timezone-related code:
* renamed syscalls _kern_[gs]et_tzfilename 
  to _kern_[gs]et_real_time_clock_is_gmt, as the filename part is no longer
  relevant (and the two corresponding parameters were removed)
* C++-ified and reworked clockconfig to use the info from 'Time settings' 
  to setup the timezone info during boot
* removed invocation of _kern_get_tzfilename() from tzset(), as the syscall
  no longer exists and tzset() is currently broken anyway
* adjusted the Time preflet to use the renamed syscall when getting/setting 
  the RTC info


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37881 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-03 17:47:26 +00:00
Oliver Tappe
308ca58d67 * deprecated set_timezone(), as we no longer support (and need) timezone files
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37875 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-03 16:50:28 +00:00
Oliver Tappe
60656c54d1 * don't use B_USE_POSITIVE_POSIX_ERRORS in libroot, let any interested party
use that and the posix_error_mapper

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37737 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-07-25 17:20:39 +00:00
Oliver Tappe
ac055d4bf8 Avoid rm switching to interactive mode for any locale other than POSIX:
* reset errno to 0 if it has been set during execution of any ICU method
  (which doesn't set errno itself, but may invoke system functions that do)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37736 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-07-25 17:10:52 +00:00
Oliver Tappe
bc981208fa * replace use of strcmp with strcasecmp, as locale names are supposed to be
case insensitive

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37735 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-07-25 11:31:56 +00:00
Oliver Tappe
a4823efd7d Fix problems with sed and gcc caused by reintegration of posix-locale:
* support invocation of ctype/wctype macros with EOF/WEOF (-1), which would
  access more or less random memory before - I don't know why this worked
  more or less reliably for the POSIX locale, but it didn't for any other


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37730 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-07-24 16:20:52 +00:00
Oliver Tappe
c0f9765409 * minor cleanup (whitespace and superfluous include)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37729 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-07-24 16:04:43 +00:00
Oliver Tappe
a3f665982e * reintegrated posix-locale
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37725 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-07-23 23:13:00 +00:00
Oliver Tappe
bca50be432 Second go at fixing what should have been part of r31927:
* uncommented fwscanf() in wchar.h to make it available
* imported wcsftime() from FreeBSD-8 (which just wraps strftime()), so that we 
  not only declare it, but provide an implementation, too
As a result, the next build of gcc4 should be able to detect full support for wchar_t and in turn activate wchar_t-based template types (like std::wstring).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37720 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-07-23 17:34:33 +00:00
Siarzhuk Zharski
d31f4dd5eb fix for "deprecated conversion from string constant to 'char*'" error.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37258 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-06-25 20:20:59 +00:00
Ingo Weinhold
85db3873a9 find_directory.c, driver_settings.c: Converted to C++.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37256 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-06-25 13:40:51 +00:00
Jérôme Duval
533119eab0 Patch from Joseph Prostko to fix the build with GCC 4.4 (ticket #4204).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36954 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-05-27 19:58:28 +00:00
Axel Dörfler
ae26daa623 * The '-' modifier was ignored for anything but relative seconds. Now, months,
days, and years are supported as well.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36821 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-05-15 14:32:45 +00:00
Stefano Ceccherini
c65e6981d2 rest of the patch by Kaliber in ticket #5875.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36578 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-05-02 10:34:57 +00:00
Axel Dörfler
fd722a6734 * Minor coding style cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36439 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-04-23 18:28:45 +00:00
Jérôme Duval
8fbb8bd5b6 fixes r36356, *only* when times is NULL, both the access and modification timestamps should be set. Thanks to Ingo for reviewing!
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36379 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-04-20 17:23:57 +00:00
Jérôme Duval
1276d52122 * fixed utimensat() when times is NULL, both the access and modification timestamps should be set (bug #5759).
* the meaning of AT_SYMLINK_NOFOLLOW was also reversed.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36356 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-04-19 17:12:44 +00:00
Ingo Weinhold
d78426257a Use SPINLOCK_PAUSE() in the pthread_spin_lock() loop.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36352 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-04-19 14:17:17 +00:00
Ingo Weinhold
ef1716f81b Patch by Lucian Adrian Grijincu: Added pthread spinlock support.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36333 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-04-17 19:38:01 +00:00
Jérôme Duval
42fb4f4050 * fstatat: the meaning of AT_SYMLINK_NOFOLLOW was reversed. Fixed #5731.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36331 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-04-17 11:39:01 +00:00
Ingo Weinhold
f71274580b * Private libroot locking primitives:
- Reimplemented mutex to use the _kern_mutex*() syscalls.
  - The initializer functions cannot fail anymore -- changed their return type
    to void.
  - Changed the initializer function semantics to not copy the name by default
    anymore (as in the kernel). Also added *_etc() versions of them that take an
    additional flags.
  - Added static initializer macros.
  - Made the mutex (and thus recursive_lock) lock functions non-interruptable.
  - Got rid of the "lazy" version. They are no longer needed, since the
    initialization of the standard types can be done statically and cannot fail.
* Adjusted libroot, runtime loader, and other code using the private libroot
  locking primitives to the new semantics.
* pthreads mutexes and condition variables:
  - Reimplemented using the _kern_mutex*() syscalls.
  - Consistently use POSIX error codes.
  - Fixed some not quite POSIX compliant behavior.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36323 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-04-15 21:52:49 +00:00
Ingo Weinhold
251e72542e Added TODO.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36322 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-04-15 21:48:12 +00:00
Michael Lotz
545259ff2e This fixes the debug build of libroot.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36253 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-04-14 12:07:09 +00:00
Axel Dörfler
ee0d2be9e4 bonefish+axeld:
* Implemented a tiny bit more sophisticated version of
  estimate_max_scheduling_latency() that uses a syscall that lets the scheduler
  decide.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36170 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-04-11 20:40:58 +00:00
Ingo Weinhold
16b4b2c13b Fixed broken sprintf() invocation.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36087 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-04-08 17:06:56 +00:00
Ingo Weinhold
078dbb2d0e Defined more sysconf() and _POSIX_* constants required by POSIX.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36074 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-04-07 18:52:25 +00:00
Ingo Weinhold
f603ab3c58 Disabled more unused code (the cache allocation is disabled, so no need for
deallocation).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36073 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-04-07 18:51:00 +00:00
Michael Lotz
610a2eed63 Made heap classes const just in case. They really already were though.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35713 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-03-01 22:29:23 +00:00
Jérôme Duval
87c1c0e443 moved fenv arch implementations to their respective directories
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35527 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-19 22:48:35 +00:00
Michael Lotz
64bf879506 Finish the implementation of heap_debug_malloc_with_guard_page() using mprotect
to make the guard page inaccessible. Thanks Ingo for the pointer!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35488 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-15 23:48:51 +00:00
Michael Lotz
386c8bad1b Return an error when encountering an invalid allocation info.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35482 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-15 21:42:55 +00:00
Michael Lotz
ac653a30df Add heap_debug_set_debugger_calls() which allows to disable debugger calls for
the heap debug panics. Instead syslog output is generated if turned off.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35481 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-15 21:35:07 +00:00
Michael Lotz
c1502cf1b8 Add heap_debug_get_allocation_info() to retrieve the size of the allocation as
well as the thread allocating it. Can for example be used to verify that an
object or buffer is as large as expected.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35480 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-15 20:57:52 +00:00
Michael Lotz
081ff2db28 * Add heap_debug_set_memory_reuse() which allows to disable memory reuse,
keeping all returned heap memory in the 0xdeadbeef state (including the
  first sizeof(void *) bytes otherwise for the free list). While wasting a lot
  of memory it allows you to rely on 0xdeadbeef being always present as no
  future allocation will reuse the freed memory block.
* Also added heap_debug_malloc_with_guard_page() which is intended to allocate
  a memory block so it is aligned that the start of invalid memory past the
  allocation is in an unmapped guard page. However the kernel backend that would
  guarantee this is not yet implemented, so right now this works only by chance
  if no other area happens to be allocated exactly past the created one. With a
  very specifc suspicion you can put that one allocation you get to good use
  though. It causes a crash when accessing memory past the allocation size so
  you actually get a backtrace from where the access happened instead of only
  after freeing/wall checking.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35478 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-15 20:28:15 +00:00
Artur Wyszynski
e381020556 Disabled fenv for ppc & arm platforms for now.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35440 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-09 14:10:07 +00:00
Artur Wyszynski
38ecc1a764 Added FreeBSD fenv implementation - tested with dmd port, seems that it works
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35437 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-09 06:09:28 +00:00
Artur Wyszynski
cee04e8074 Fixed various errors/warnings reported by cppcheck:
* memory leaks
* resource leaks
* added const's to getters
* removed a few reundant conditions


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35433 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-08 22:50:38 +00:00
Michael Lotz
f6a6245c89 * Adding malloc_debug.h that exposes the malloc_debug API.
* Moving some functions around, removing and adding others for the public API.

I've written a blog post at haiku-os.org to go as documentation for this
introducing the API and the other helpful bits.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35431 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-08 01:27:21 +00:00
Michael Lotz
60fb713d19 Must only advance by step sizes, otherwise we may end up with misaligned pages
again.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35426 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-07 16:55:43 +00:00
Michael Lotz
160abe2685 Sync two locking changes from kernel heap. This just moves the page locking into
the contiguous page allocation function and unlocks a bin locker a bit earlier.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35424 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-07 02:02:13 +00:00
Michael Lotz
638a24fa52 * Seperate the raw page wise allocation and allocations from bins.
* Make the contiguous page allocation capable of aligning the allocation
  and make it more clever by checking up front if there's a chance of getting
  enough pages at all, by giving up earlier if the page count can't be fit
  anymore, and in the alignment case by only checking the pages which have a
  valid alignment.
* If the alignment requirement is > B_PAGE_SIZE we now use page allocation
  directly, because the bins aren't necesarily aligned on their size past
  B_PAGE_SIZE anymore.
* When doing aligned bin allocation, calculate the aligned size up front and
  choose the right heap for the allocation.
* Also when doing aligned bin allocations we not only need to round up the size
  but also ensure that the bin we choose is aligned at all.
* Moved adding leak check info into it's own function.

Fixes various misalignment problems when working with alignments > B_PAGE_SIZE
or when using alignments < allocation size. Also the directly aligned page
allocations now only use up as many pages as actually required instead of
allocating based on the rounded up to align size.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35422 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-07 01:09:27 +00:00
Stephan Aßmus
0ccd0a0b6f axeld+stippi:
When initializing driver settings, make sure to set the parameter count to 0,
because these settings have not been parsed yet. This allows us to safely free
the settings. Freeing the settings is triggered in load_driver_settings() if
we encounter settings which have been originally loaded by the boot_loader,
which might be stale. I think the bug would trigger for settings which had been
loaded by the boot_loader but had never been parsed.

With this change, I can use the userlandfs on all my machines.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35166 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-19 15:40:24 +00:00
Jérôme Duval
585a28af7b I thought afterwards the stub can still be useful to run R5 C only binaries on a GCC4 Haiku. It might be better placed in the arch folder though.
Also fixed a typo.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35146 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-18 22:32:57 +00:00
Adrien Destugues
35c16bd3fe DeadYak over IRC:
-Fix gcc4 build


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35145 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-18 21:52:30 +00:00
Jérôme Duval
a4248cf53b * Rename _thread_do_exit_notification() to _thread_do_exit_work() as suggested by Ingo.
Also added an empty stub for _thread_do_exit_notification() when compiling for GCC2.
* Removed the check testing if the thread is already dead.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35142 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-18 17:58:38 +00:00
Rene Gollent
114580cd78 Update find_directory to use a lowercase path for the on-disk trash location like more or less all other system dirs. Should be the last of the trash changes.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35135 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-17 20:47:28 +00:00
Axel Dörfler
29ddbdbb53 * Moved the "var" directory to /boot/common/.
* Moved the "tmp" directory out of /var, and to /boot/common/cache/.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35104 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-16 17:17:07 +00:00
Stefano Ceccherini
af029e2fb3 Fixed a gcc4 warning
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35103 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-16 16:49:57 +00:00
Jérôme Duval
0bce4bb917 * don't destroy an already dead thread. Fixed #5271. Maybe we should only make this check on the sMainThread though.
* Implementations of pthread_getschedparam and pthread_setschedparam I had since a while.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35098 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-16 15:19:50 +00:00
Rene Gollent
a65ec15376 Fix style violations (thanks Axel!).
Update filesystem name in find_directory as our fat filesystem is not named "dos".



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35093 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-15 23:31:45 +00:00
Rene Gollent
01dffd8edd More Tracker refactoring:
* relocated Trash dirs to volume roots by modifying find_directory() to report the trash location as volume/Trash.
 * FSUtils no longer creates /home/Desktop on every volume.
 * TrashWatcher now keeps icons in sync on all volumes.
 * Simplified FSGetDeskDir since it no longer has to worry about getting the desk directory on any volume other than the root.
 * Relocated trash context menu logic to BContainerWindow so it can also be used at the volume roots.
 * DesktopPoseView now creates a virtual Trash pose representing the trash contents as before.
 * Corrected typo: Model::WriteAttrKillForegin() -> Model::WriteAttrKillForeign().

Closes ticket #5245.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35085 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-15 05:12:45 +00:00
Ingo Weinhold
90daf7c61e * init_after_fork(): In case the reservation for the heap area failed
sHeapBase will probably not point to memory in the heap area. Use
  sFreeHeapBase instead.
* When reserving the heap area range fails, set sHeapBase to NULL, so we'll
  later know about the fact.
* hoardSbrk(): When resizing the area fails, we'll now try to allocate a new
  one, if the former failure was not due to an "out of memory" situation.
  E.g. if the heap range reservation failed or, if we just have exhausted the
  range, another area could be in the way. Also when mmap()ing over
  malloc()ed, the heap area count be split in two with the first part
  retaining the old area ID, thus preventing resizing as well. Fixed #5168.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34897 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-04 19:37:25 +00:00
Axel Dörfler
a7cc5352d8 * Our userland build obviously adds some default headers with GCC2 - why would
it do that? This fixes the kernel build, and probably GCC4, too.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34840 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-01 19:36:01 +00:00
Axel Dörfler
31e49a2f1d * Implemented missing alphasort(), and scandir() POSIX functions. Completely
untested yet, though.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34838 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-01 18:49:55 +00:00
Ingo Weinhold
448671a39c * Build library libroot_debug.so, which is the standard libroot.so with the
debug heap implementation.
* Added libroot_debug.so to the DevelopmentMin optional package. Since it has
  the same soname as the standard libroot, it can simply be specified in
  LD_PRELOAD to run a program with that version.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34788 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-28 00:13:17 +00:00
Jérôme Duval
d0c1951713 added fmin, fma, fmax from glibc (ticket #5114).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34652 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-13 14:22:13 +00:00
Ingo Weinhold
b2a2d5c065 The usual files forgotten to commit. The generic system_time_nsecs()
implementation.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34545 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-07 22:53:53 +00:00
Ingo Weinhold
34a48c70ef Added type nanotime_t (an int64 storing a nanoseconds value) and function
system_time_nsecs(), returning the system time in nanoseconds. The function
is only really implemented for x86. For the other architectures
system_time() * 1000 is returned.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34543 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-07 21:43:19 +00:00
Ingo Weinhold
f39f7a05a2 Add init_once.cpp to the build.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34401 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-01 09:35:25 +00:00
Ingo Weinhold
840be9d6e6 Added __init_once(), an almost exact clone of pthread_once(), with the
difference that the initialization function has an additional void* argument,
so that it is suitable for initializing stuff in objects.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34400 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-01 09:34:58 +00:00
Ingo Weinhold
258b34c594 * Fixed wrong parameter of lazy_mutex_destroy().
* Split locks.cpp into mutex.cpp, recursive_lock.cpp, and rw_lock.cpp (new
  subdirectory locks/).
* runtime_loader no longer includes the rw_lock, allowing removal of the TLS
  dependency again.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34364 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-30 10:29:51 +00:00
Axel Dörfler
c598298047 * Cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34363 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-30 08:31:31 +00:00
Axel Dörfler
a4faebeb11 * Replace the FD used for fopendir() instead of closing the old one - according
to the specs, the application may still use the FD without changing its state,
  and only closedir() should finally close it.
* This fixes bug #5055.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34362 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-30 08:29:12 +00:00
Ingo Weinhold
ea77094b24 Replaced the hown-grown recursive lock implementation by a shared lazy
recursive lock. I haven't investigated it closer, but the previous
implementation was even broken -- "strace /bin/true" showed two
release_sem() calls, but no acquire_sem().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34342 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-29 11:17:53 +00:00
Ingo Weinhold
8bef23107e Added a lazy_recursive_lock implementation -- identical to recursive_lock,
just using a lazy_mutex instead.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34341 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-29 11:14:50 +00:00
Ingo Weinhold
6e06922908 Replace semaphores/benaphores in the env, fork, and user/group code by lazy
mutexes.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34340 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-29 10:47:01 +00:00
Ingo Weinhold
937b23cb21 Added locking primitive lazy_mutex, which has essentially the same behaviour
as a mutex, but allocates its semaphore lazily. This comes at the cost of an
additional atomic_add() when the semaphore has actually to be acquired, but
saves the semaphore creation completely in single-threaded programs and in
any program when there's no lock contention.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34339 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-29 10:44:07 +00:00
Ingo Weinhold
93b9f21335 Added recursive lock implementation (an adapted kernel version).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34337 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-29 09:54:58 +00:00
Ingo Weinhold
d78ffde5d1 * Some minor cleanup and improved comments.
* Fixed check in hoardSbrk(): resize_area() was invoked, even if the area was
  already large enough.
* Increased the initial heap size to 64 pages. Apparently the hoard
  implementation is rather generous and the first malloc() (caused by
  __init_heap()) already required enlarging the area.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34336 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-29 09:20:58 +00:00
Axel Dörfler
f4ab5d73ce * This fixes the remaining warnings in exit.c
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34294 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-26 17:00:09 +00:00
Axel Dörfler
52d6f78a9a * Minor cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34292 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-26 16:58:36 +00:00
Axel Dörfler
d82802841c * Minor cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34290 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-26 16:33:03 +00:00