Commit Graph
100 Commits
Author SHA1 Message Date
Axel Dörfler 9c12864dfd Header for the kernel image API.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2414 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-01-12 15:59:12 +00:00
Axel Dörfler 515a4a6590 Implementation of the kernel part of the image API.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2413 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-01-12 15:58:08 +00:00
Axel Dörfler 1ff1332c77 The bootmaker now defaults to the endian of the host platform.
Fixed style issues.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2402 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-01-10 11:48:38 +00:00
Axel Dörfler d9f08d808d The empty string ("", length 0) will now be replaced with ("", length 1) in
queries, to let the BPlusTree::Find() method search for it (there can't be
any keys in the tree with length 0).
That means that the query 'META:url=""' will now return all files where the
attribute "META:url" is present but empty.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2401 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-01-10 11:14:07 +00:00
Axel Dörfler 3b7911f105 We now check in bfs_rename() if the new name is the same as the old name
in the same directory - in this case, we will return B_OK (as nothing has
to be done to fulfill the request), instead of B_BAD_VALUE which would
be thrown later in the process.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2400 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-01-10 11:08:51 +00:00
Axel Dörfler 4fff689f48 Some minor updates:
arch_cpu: could have used the TLS_SIZE macro in one place, removed
a now unused variable, assignments to tss_loaded are now booleans.
thread.c: added the new fields to _dump_thread_info().


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2393 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-01-08 09:27:55 +00:00
Axel Dörfler dd8e42a8b4 Also changed the (void *) to (void **) variable in tls_address() here
(the same change has already been done in support/TLS.h).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2392 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-01-08 09:14:16 +00:00
Axel Dörfler f9afe354bf Added some calls to find_thread(NULL) which does now work as expected
(as it uses TLS, have a look at OS.h).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2383 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-01-07 09:56:33 +00:00
Axel Dörfler 20726b7fb1 _create_thread() now correctly allocates the stack with REGION_ADDR_EXACT_ADDRESS
from the USER_STACK_REGION (until B_BASE_ADDRESS is available), made it much better
readable. It now grows from the lower USER_STACK_REGION up to the start of the main
thread's stack location.
Calls arch_thread_tls_init() and accounts for the TLS area in the stack region.
Added some comments, some cleanups.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2382 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-01-07 09:48:01 +00:00
Axel Dörfler 59cbb92fdf team_create_team2() now also allocates a region for TLS in the primary stack
area. It now also calls arch_thread_init_tls(). Cleaned it up to make it more
readable, added some comments.
Some other cleanups.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2381 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-01-07 09:40:59 +00:00
Axel Dörfler 2a6fbb7f88 Removed some hard-coded values with definitions (mostly USER_x_SEG in arch_x86.S,
and TSS_BASE_SEGMENT in i386_set_tss_and_kstack() (thanks Daniel for pointing this
out)).
Added a arch_thread_init_tls() function which fills the reserved slots - the find_thread()
inline asm in OS.h is finally working.
Added some more comments, resolved the ToDo items from last time :-)
arch_thread_context_switch() now calls set_tls_context() at the correct location.
arch_thread_enter_uspace() now calls set_tls_context() as there is no context
switch in this case for the current thread after TLS has been set up, and it
now gets a pointer to the thread structure directly, and calculates the user
stack top itself, rather than the callee.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2380 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-01-07 09:33:30 +00:00
Axel Dörfler 074a16b53e Added a private tls.h file with definitions for the reserved TLS slots.
Renamed i386_set_kstack() to i386_set_tss_and_kstack(), because that's what
it does.
Added a new function arch_thread_init_tls() which must be called after
having allocated the TLS area.
Renamed arch_thread_initialize_kthread_stack() to arch_thread_init_kthread_stack()
to be more consistent.
Changed the parameters for arch_thread_enter_uspace() - it now gets a pointer
to the thread structure and takes the user stack pointer from there (which
might also be architectural different).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2379 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-01-07 09:17:31 +00:00
Axel Dörfler 1f6480576d Added new fields for the local storage of "errno" in the kernel and user-
level TLS.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2378 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-01-07 09:13:36 +00:00
Axel Dörfler 20dde76256 I've added a MAIN_THREAD_STACK_SIZE definition, and put the corresponding
BeOS values commented beneath it.
For now MAIN_THREAD_STACK_SIZE is the same as STACK_SIZE.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2377 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-01-07 09:12:26 +00:00
Axel Dörfler ccfdaba3e9 Moved the errnop() function to the new TLS stuff.
We now have a separate errnop() for the kernel, which just references
a field in the thread structure.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2376 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-01-07 09:08:44 +00:00
Axel Dörfler 2d6ab447f9 Moved arch-dependent stuff to the correct location, no more #if __INTEL__
anymore.
Adapted tls.c to honour the reserved slots.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2375 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-01-07 09:05:27 +00:00
Axel Dörfler 0464331f06 The main thread didn't wait for the other threads.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2374 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-01-07 09:01:51 +00:00
Axel Dörfler 3c2ec528f6 The return value is now also a variable of type (void **).
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2373 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-01-07 00:20:52 +00:00
Axel Dörfler f143877df9 _start() now uses set_segment_descriptor() to initialize the GDT instead of
the direct values.
Some cleanups.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2369 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-01-06 08:33:59 +00:00
Axel Dörfler 39c5004d20 Replaced the select_test application with tls_test in the boot image.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2368 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-01-06 08:31:26 +00:00
Axel Dörfler a8687de4ad Added a _ASSEMBLER define in the assembler rule, so that we can differentiate
in a header if it was included from assembler or not (if anybody knows a better
way how to solve this, feel free to speak, I haven't found anything :).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2367 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-01-06 08:30:40 +00:00
Axel Dörfler 19321ae5a8 Temporarily removed arch_selector.c from the build - it's currently not used
at all, and assumes a fixed and wrong number of preallocated GDT entries.

Implemented TLS: there is one GDT entry per CPU. If a context switch happens,
the FS register of the new thread is set to the matching GDT, and the GDT is
changed so that it points to the current thread's TLS storage area.
This area currently resides unsafely at the bottom of the user stack - for
some reason I could not figure out, it doesn't even work correctly most of
the time (it segfaults when accessing a slot via FS). I've added a ToDo item
explaining the situation - hopefully I have more ideas when I slept a bit more...

The GDT is now no longer static in arch_cpu.c and has been renamed from gdt to
gGDT. It's now also referenced in arch_thread.c, and it would make sense for
arch_selector.c to use it as well (instead of another local copy).
arch_cpu_init2() now uses the set_tss_descriptor() inline function and the
TSS_BASE_SEGMENT macro to set up the TSS section. It now also sets up the
TLS segment descriptors (as TSS, one entry per CPU).

Since I removed desc_table from the headers (the GDT is now a (segment_descriptor *)),
I added it locally to arch_int.c.
i386_enter_uspace() now don't set the FS register to 0x23 anymore, since it's
now already set correctly at the end of arch_thread_context_switch().

Some clean-ups.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2366 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-01-06 08:25:01 +00:00
Axel Dörfler 722bf47f67 Added some ToDo items.
Smaller cleanup.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2365 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-01-06 08:10:54 +00:00
Axel Dörfler 1d661e3285 Just slightly changed a comment; there was more, but I removed that, and
I was too lazy to revert that little change back, so that I would be able
to write this short paragraph explaining what I've done.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2364 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-01-06 08:10:03 +00:00
Axel Dörfler d703e5451d Removed an XXX comment question, and replaced it with an explanation of the
issue.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2363 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-01-06 08:08:13 +00:00
Axel Dörfler 831e32af8c Userland part of the TLS implementation for x86.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2362 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-01-06 08:05:09 +00:00
Axel Dörfler 1f149d94c4 Added a simple TLS test app.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2361 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-01-06 08:04:21 +00:00
Axel Dörfler 7208e95f0e Moved the gdt_idt_descr struct from arch_stage2.h to stage2_priv.h.
Moved the tss_descriptor structure to descriptor.h, updated it to be a
segment_descriptor structure, and provided inlines for set_tss_descriptor(),
set_segment_descriptor(), set_segment_descriptor_base(), and
clear_segment_descriptor().
Also added defines for the different privilege levels and descriptor types.
Removed the unusused and incorrect TSS definition, introduced new
TSS_BASE_SEGMENT and TLS_BASE_SEGMENT macros.
Removed include of arch/cpu.h in arch_cpu.h.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2360 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-01-06 08:02:44 +00:00
Axel Dörfler 5c339b0237 Fixed some issues in TLS.h (i.e. the inline version of tls_address() accidently
returned a (void *) instead of a (void **)).
Added TLS_MAX_KEYS macro, and a comment.
Cleanup.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2359 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-01-06 07:57:10 +00:00
Axel Dörfler 50808915da Removed unused file int.c.
Minor style changes in arch_vm*.c


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2352 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-01-02 13:56:53 +00:00
Axel Dörfler e8bfc82801 Removed config_manager from the old location (now in src/add-ons/kernel/bus_managers)
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2351 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-01-02 13:23:06 +00:00
Axel Dörfler 538ee6189c Moved the config_manager to the correct location and added it to the build.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2350 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-01-02 13:21:19 +00:00
Axel Dörfler 346646a2c7 Moved the files vm_types.h, syscalls.h, and vfs_types.h to the private
kernel header directory - they are by no means public includes.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2349 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-01-02 13:16:35 +00:00
Axel Dörfler c893786008 Exported the whole known driver module API - not implemented yet, though.
Removed the probably broken bus module info.
Renamed functions cfdm -> driver, cfbm -> bus.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2341 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-12-31 18:33:32 +00:00
Axel Dörfler ea8ace93a1 The /dev/misc/config driver which provides userland access to the
Configuration Manager, once this is implemented.
Needed for the "listdev" command and the Devices preferences application.
Not tested!


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2339 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-12-31 16:19:09 +00:00
Axel Dörfler 7fae070584 Included NewOS change 1674. Moved private elf structures to elf_priv.h.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2320 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-12-30 13:34:25 +00:00
Axel Dörfler ed5c11d75a Included NewOS change 1674 - moved architecture dependent part of elf.c
to the correct location.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2319 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-12-30 13:33:22 +00:00
Axel Dörfler 7747cd8133 Included Travis' change 1687.
Cleanups, added TRACE() debugging macro instead of commented dprintfs.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2318 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-12-30 11:18:57 +00:00
Axel Dörfler 2d4d170f83 Some cleanups.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2317 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-12-30 11:17:36 +00:00
Axel Dörfler ce29ea4e8f Removed it again :-)
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2215 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-12-10 04:27:38 +00:00
Axel Dörfler 796a8651e9 Added a skeleton for the image API. Contains almost no code yet, though, only
some structure definitions (to outline some basic ideas), and the symbols
exported to userland.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2214 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-12-10 03:36:18 +00:00
Axel Dörfler d768457f49 Included NewOS change 1685 in OpenBeOS; a fix for the VM.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2190 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-12-08 23:12:09 +00:00
Axel Dörfler 89e64f44be Added more checks in the BPlusTree implementation if DEBUG is defined.
The correctness of max_number_of_levels is now checked in Find().
Added a class NodeChecker which checks the integrity of the specified node
when the object is destructed (via new method bplustree_node::CheckIntegrity());
now used in Remove() and Insert().


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2169 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-12-06 04:41:51 +00:00
Axel Dörfler 528a411973 Updated ToDo file.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2168 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-12-06 04:39:28 +00:00
Axel Dörfler 1d5f9787e8 Added a few comments and ToDo items.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2167 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-12-06 04:32:48 +00:00
Axel Dörfler 697df4613d Style clean-ups *and* Index::Update() now correctly converts B_MIME_STRING_TYPE
to B_STRING_TYPE for the lower layers - should probably find a better solution
to handle this.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2166 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-12-06 04:32:05 +00:00
Axel Dörfler d3ca8eec8d The new block bitmap is now written using through the log for chkbfs.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2163 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-12-05 20:30:18 +00:00
Axel Dörfler a576ea9bba Made the B+tree test a bit harder.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2162 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-12-05 20:28:33 +00:00
Axel Dörfler 424880282f Fixed a warning.
Replaced "int state" with "cpu_status state" where appropriate.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2160 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-12-04 16:40:07 +00:00
Axel Dörfler 11d4dc0bf5 Added a module_test() function.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2150 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-12-03 17:59:30 +00:00
Axel Dörfler fb101ff170 Completely rewritten the module iterator code. Fixed many bugs in that
code and made it much simpler (it now just uses a stack of path names
instead of this complex doubly-linked module_iterator_dir list).
Now works together with the rest of the code without making any problems.
Added a module_test() function which iterates over all existing modules.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2149 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-12-03 17:54:09 +00:00
Axel Dörfler ac5b2b4ece bootfs_read_dir() and devfs_read_dir() both returned B_ENTRY_NOT_FOUND
instead of B_OK for the last directory entry.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2148 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-12-03 17:49:28 +00:00
Axel Dörfler 744761bf27 Removed the team->path variable. Renamed ioctx to io_context.
Some cleanups, moved user_*() functions to the end of the file.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2144 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-12-03 14:17:53 +00:00
Axel Dörfler 1291a19d84 thread->page_faults_allowed is now initialized.
Updated due to the ioctx -> io_context change.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2143 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-12-03 14:11:35 +00:00
Axel Dörfler 5cdaa5176e Now panics if page faults are forbidden and happen anyway.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2142 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-12-03 14:10:34 +00:00
Axel Dörfler 52bd3fc17c Implemented forbid_page_faults() and permit_page_faults(), added a new
field to the thread structure to keep track of the current state.
forbids/permits can be nested.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2141 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-12-03 14:09:43 +00:00
Axel Dörfler 420a6221ec Moved thread_types.h to this place.
Changed fd.h inlines because team->ioctx is now team->io_context.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2140 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-12-03 14:07:35 +00:00
Axel Dörfler 6ba1dc2341 Moved it to private/kernel/, this is no public header.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2139 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-12-03 14:06:21 +00:00
Axel Dörfler c5cf4e87b6 Removed the "path" field in the team structure. Renamed "ioctx" to "io_context".
Added a "page_faults_allowed" field in the thread structure.
Clean up.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2138 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-12-03 14:05:21 +00:00
Axel Dörfler 1a72f541b5 Added function prototypes for forbid_page_faults() and permit_page_faults().
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2135 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-12-03 01:51:39 +00:00
Axel Dörfler aeb5053982 Added empty (until TLS steps in) function stubs for:
permit_page_faults(), and forbid_page_faults().


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2134 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-12-03 01:50:55 +00:00
Axel Dörfler af9ba303e4 bfs_walk() now prints the file name if it couldn't locate a file with debug
output turned on.
bfs_open_dir() now accepts again all containers, because bfs_open_index_dir()
is using it, too (too bad when you forgot about your own code).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2122 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-11-29 20:03:49 +00:00
Axel Dörfler 006928f81b Fixed the bug in the query code: B_MIME_STRING_TYPE was not correctly
translated into B_STRING_TYPE for the key comparison (it was translated
but not saved under the new type).
compareKeys() will now return -1 if it didn't know the type to compare.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2121 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-11-29 19:22:52 +00:00
Axel Dörfler edd97f84ad Fixed return code (using errno) of readdir().
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2120 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-11-29 08:47:01 +00:00
Axel Dörfler 750a82c5d3 Added new debug output macros (TRACE()).
thread_exit() for now prints a warning if it was called with interrupts
disabled.
Fixed a bug in thread_exit2() that restored the interrupts too early,
instead of simply enabling them (and restoring them later) [found by
Marcus O. great debug additions].
Fixes for the khash changes.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2119 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-11-29 08:42:52 +00:00
Axel Dörfler 14d9bcd728 Fixed two warnings.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2118 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-11-29 08:39:34 +00:00
Axel Dörfler 3ae9bebe33 Fixes for the khash changes.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2117 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-11-29 08:38:52 +00:00
Axel Dörfler fc88dc959f Added a missing include (and fixed a warning this way).
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2116 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-11-29 08:37:19 +00:00
Axel Dörfler 8a91be0446 Removed two warnings.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2115 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-11-29 08:36:42 +00:00
Axel Dörfler 8a531eeb0a Fixes for the changes in khash.
Now the d_reclen field of struct dirent is correctly calculated in all
file systems (read_dir() function).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2114 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-11-29 08:36:05 +00:00
Axel Dörfler b9b1c1c4f5 Almost completely rewritten module.c. Locking now works correctly, memory
leak fixed, some other bugs fixed, removed the global queues as there weren't
needed and used at all, moved to the other hash table implementation
(because the new_hash_table stuff was buggy). Should really work okay now :-)

Added the last missing function get_next_loaded_module_name() - I am not
sure the Be version works this way, but we could easily change that after
actually having found out how that one is really working.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2113 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-11-29 08:33:57 +00:00
Axel Dörfler d92e4b19e4 Completely removed the buggy, inflexible, and incomplete new_hash_table
implementation.
Some cleanups of the other code.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2112 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-11-29 08:30:20 +00:00
Axel Dörfler 8f6008b482 We now have our own (and cleaner) modules.h file.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2111 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-11-29 08:27:25 +00:00
Axel Dörfler ebf5be407a Reworked and cleaned the khash; completely removed the new_hash_table
implementation that was buggy, not very flexible, and incomplete.
Changed some variable types, and function names.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2110 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-11-29 08:25:08 +00:00
Axel Dörfler 717eabde1f Added comments to the fields of the dirent structure. Most important one
is d_reclen which points out that this field is not the name length but
the one of the whole record (this is also handled incorrectly by the kernel
file systems right now).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2109 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-11-29 02:49:58 +00:00
Axel Dörfler c78d05895c Removed some debug output I accidently added to the repository.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2107 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-11-28 15:13:08 +00:00
Axel Dörfler 363999a1eb Thanks to Bruno, we fixed a bug in Inode::Create() that happened with newly
created files that already existed.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2098 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-11-27 22:40:04 +00:00
Axel Dörfler 98138634aa Added the private ioctl calls to get the 64-bit create and modified time.
Most probably these are used by the kernel to identify changes in a shared
library or something like this.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2088 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-11-25 23:51:03 +00:00
Axel Dörfler cb0a9fe094 Fixed a stupid bug, used Inode::Name() without locking.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2087 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-11-25 23:30:54 +00:00
Axel Dörfler 2ad0108fbe Now uses Inode::GetName() and strlcpy().
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2086 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-11-25 18:43:11 +00:00
Axel Dörfler c0f2928e7d Now uses Inode::GetName() where appropriate.
Fixed a bigger race condition when matching against the name index.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2085 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-11-25 18:42:40 +00:00
Axel Dörfler 97d569f0de Now uses strlcpy() rather than strcpy() where appropriate.
The inode is now locked in bfs_close() (when the indices are updated).
Moved the special cases for INODE_NO_CACHE and INODE_CHKBFS_RUNNING into
bfs_free_cookie() - should probably do that with the index update as well.
Updated some comments.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2084 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-11-25 18:07:35 +00:00
Axel Dörfler 0606e6e197 Added a new method Inode::GetName() which safely copies the inode's name
to the provided buffer.
Inode::Name() no longer locks the small_data region anymore.
Added ASSERTs that the small_data region is locked for the methods requiring
that.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2083 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-11-25 17:38:19 +00:00
Axel Dörfler d88937ace2 Added a SimpleLock.IsLocked() method.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2082 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-11-25 17:36:53 +00:00
Axel Dörfler 0f374ebc88 Added a strlcpy() call for usage in BeOS (OpenBeOS has it built-in already).
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2081 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-11-25 17:35:21 +00:00
Axel Dörfler d369893781 Removed the usage of Inode::Name() in the debug output.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2080 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-11-25 17:33:43 +00:00
Axel Dörfler bb5a5c05ec Added a document describing/specifying the (future) boot process for
OpenBeOS on x86 systems.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2079 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-11-25 13:58:24 +00:00
Axel Dörfler 673ecc16e5 Added some more output (that should help users not that familiar with BFS).
Now supports fixing errors as well (and introduced a new option -e to fix
some additional errors).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2069 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-11-23 18:39:25 +00:00
Axel Dörfler 2b99433ef9 Added a basic "chkbfs" command to the repository, doesn't fix anything yet,
though (boy, I am so lazy...).
Cleaned up the Jamfile a bit.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2065 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-11-22 20:15:12 +00:00
Axel Dörfler fea5713c6d Added a comment about live-queries in Inode::Create().
Some style cleanups.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2060 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-11-22 03:45:01 +00:00
Axel Dörfler b5a0c65c19 Added support for aborted "chkbfs" runs (so that they won't do any harm).
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2059 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-11-22 03:32:53 +00:00
Axel Dörfler f512ce4233 Added a new inode flag INODE_CHKBFS_RUNNING to detect aborted chkbfs processes.
bfs_read_vnode() will now wait for half a second at maximum until it returns
the B_BUSY error (so that live queries will like it better).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2058 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-11-22 03:31:34 +00:00
Axel Dörfler edd77cc706 Added a missing newline.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2057 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-11-21 21:27:55 +00:00
Axel Dörfler 5254026ba2 Removed the logic for freeing the inode's space from bfs_remove_vnode(); now
instead calls Inode::Free().
If INODE_DONT_FREE_SPACE was set, bfs_remove_vnode() forgot to delete the
inode before returning B_OK.
bfs_read_vnode() will now return the exact error Inode::InitCheck() returned.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2056 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-11-21 20:45:52 +00:00
Axel Dörfler 11a8dbc63a Completely worked over the inode creation mechanism. Now more work is delegated
to the InodeAllocator class (initialization of the inode, tree creation for
containers).
The InodeAllocator class now frees all the space the inode occupies, including
the B+tree if it's a container (by calling the new Inode::Free() method).
Inode::Free() implementation (logic removed from bfs_remove_vnode()).
Now secures the inode from being loaded by setting the INODE_NOT_READY flag
(completely handled by the InodeAllocator class).
The inode is now removed from its parent if something went wrong after it
had been added.
Utilizes the new BPlusTree::Remove() method where appropriate.
Inode::GetAttribute() now checks if the inode opened is really an attribute.
Inode::InitCheck() now fails with B_BUSY if the INODE_NOT_READY flag is set.
InodeAllocator::Keep() now writes back the inode.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2055 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-11-21 20:42:44 +00:00
Axel Dörfler 9fec50f9db Added new Inode::Free() method which frees all space associated with an
inode.
Some style cleanups.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2054 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-11-21 20:34:04 +00:00
Axel Dörfler 8a3e35d8c3 AllocationBlock::Allocate() still had the 0xffff thing implemented, now
also the numBlocks parameter is ASSERTed - when compiled with DEBUG turned
off, BFS will enter the kernel debugger in this case (through the use of
the DIE() macro).
Same for AllocationBlock::Free() (but the 0xffff mode was already removed
there).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2053 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-11-21 20:32:54 +00:00
Axel Dörfler 98887c634e Symbolic link data streams (for long symlinks) now are located in the same
allocation group as the inode, if possible.
Moved the group used blocks info maintaining code into AllocationGroup::Allocate()
and AllocationGroup::Free() (instead of letting the BlockAllocator class do
the work).
Removed the buggy and useless extra 0xffff mode for AllocationBlock::Allocate()
and AllocationBlock::Free(), both methods now ASSERT their parameter range.
Changed some comments, style cleanups.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2052 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-11-21 20:27:57 +00:00
Axel Dörfler def426bce2 Added a BPlusTree::Remove() inline method for strings.
Style cleanups.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2051 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-11-21 20:22:36 +00:00
Axel Dörfler 2edddca0dc Removed the unused INODE_EMPTY flag, and introduced a new INODE_NOT_READY
flag which is used during construction of an inode.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2050 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-11-21 20:21:28 +00:00