two cache_refs - it needs to count the consumers of the lower cache to find
its actual number of references; the upper cache could still be in use by
someone else.
* There were several locking bugs in the VM code; since cache_ref::cache can
change, we must not access it without having the cache_ref locked.
* As a result, map_backing_store() now requires you to have the lock of the
store's cache_ref held.
* And therefore, some functions in vm_cache.c must no longer lock the cache_ref
on their own, but require the caller to have it locked already.
* Added the -s option to the cache/cache_ref KDL commands: it will only print
the requested structure, and not its counterpart (useful if accessing one
structure results in a page fault, as was possible previously).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19796 a95241bf-73f2-0310-859d-f6bbb57e9c96
without any argument specifier, and a(void); != a(); in C.
* Added the VMware graphics driver to the image.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19795 a95241bf-73f2-0310-859d-f6bbb57e9c96
Made the following changes from the version I got from Eric:
* made BppForSpace() in DriverInterface.h inline to remove some warnings
* renamed driver source files to lower case.
* removed Be Inc. copyright from kernel driver as I couldn't see anything coming
from Be Inc. there - correct me if I was wrong, Eric.
* Minor other changes like added missing header guards.
* The README provided in the main directory is only included in the accelerant
directory.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19793 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Updated coreutils.rdef to follow the same style as all other rdef files (or at least
most of them).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19792 a95241bf-73f2-0310-859d-f6bbb57e9c96
waiting for in case it was interrupted; but that could easily lead the thread_exit()
function to access invalid memory (and thus, crash the kernel): since we could not
remove our death entry from the thread, we have to make sure the thread (which might
still run even if not in the thread hash anymore) will access our death entry as
long as it is valid. IOW we must wait for the thread to delete its exit semaphore,
even if we were interrupted before.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19790 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Fixed dumping the area list of a cache I broke with the previous commit.
* Minor cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19789 a95241bf-73f2-0310-859d-f6bbb57e9c96
(you can still use both commands, but you'll see always the same output).
* The cache_ref's area list now also prints the owner of the area.
* Added "-p" option to "cache"/"cache_ref" that will show the pages of the cache; if you
omit it, it will now only present you a page counter.
* Nicer output for the commands above.
* Added "dl" to display memory in 64 bit values.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19787 a95241bf-73f2-0310-859d-f6bbb57e9c96
* send_signal_etc() (among others) used team::main_thread in an unsafe way; it is
possible for a team to be part of the team list and a group without having
a main thread very early in its creation process.
* Replaced most occurences of team->main_thread->id with team->id since the team
always inherits the ID of its main thread in Haiku for quite some time now.
* Minor cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19781 a95241bf-73f2-0310-859d-f6bbb57e9c96
the userland stack in an unsafe way - moved that stuff to arch_thread_enter_userspace(), too.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19778 a95241bf-73f2-0310-859d-f6bbb57e9c96
* This is now used for userland stack - they now always pre-commit two pages, enough
to initialize TLS and copy the user-thread-exit stub to that area.
* Minor cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19776 a95241bf-73f2-0310-859d-f6bbb57e9c96
turned off - accessing userland memory. Now, arch_thread_enter_userspace() does that
job, and as a result, may also fail.
* dump_thread() now directly prints the info of the current thread when used without
argument (rather than iterating the thread list to look for the current thread).
* If arch_thread_init_tls() fails upon thread creation, the function will now return
an error.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19775 a95241bf-73f2-0310-859d-f6bbb57e9c96
them to commit substantially less memory (we we're committing about 40 MB (!) too much
after a complete system boot). This means you'll run out of memory less likely now.
* fill_area_info() no longer filters out kernel protection flags - we may want to keep
filtering them when called from userland, though, dunno.
* Added new debugger command "avail" which shows how much memory has been committed, and
how much is regarded as free space.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19771 a95241bf-73f2-0310-859d-f6bbb57e9c96
another test that doesn't work on BeOS, dunno why, but who cares...).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19767 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Implemented a fibo_fork which uses fork() instead.
* Both tests can pretty easily let the kernel crash!
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19764 a95241bf-73f2-0310-859d-f6bbb57e9c96
to other kernel components.
* wait_for_thread_etc() will now search the team's death entries in case the
thread is already gone; also resume_thread() is now done later, and its return
code will no longer matter (as we already have our death entry, no matter if
the thread is gone now or not).
* The fibo_load_image test now works as expected (only tested with low numbers
yet, though - the mean testing comes later (first comes functionality) :-))
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19758 a95241bf-73f2-0310-859d-f6bbb57e9c96
due to problems with wait_for_thread().
* Minor cleanup to the Jamfile.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19757 a95241bf-73f2-0310-859d-f6bbb57e9c96
where there is either no address or MAC address [ethernet only]).
* _ConfigureInterfaces() now notices if a network device that has a configuration
is gone and memorizes this configuration.
* If a new device pops up, and there is an existing configuration for a device
no longer available, that configuration will be used for the new device, allowing
you to easily move your Haiku image to a new system without losing its network
settings - it does not yet test if the IP address is already in use in the local
network, though (in which case a configuration using DHCP would be preferrable).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19742 a95241bf-73f2-0310-859d-f6bbb57e9c96
* When shutting down an interface, we now wait until its reader thread is gone, too;
this is necessary in case the kernel unloads the networking stack before the reader
thread had a chance to exit.
* Added some debug output to net_socket in case you ask for unknown options.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19741 a95241bf-73f2-0310-859d-f6bbb57e9c96
in addr_range.h to add ranges to the arrays. This fixes the crashing bug reported
by Larry Baydak.
* Added some more exported functions to kernel_args.cpp (prototypes are in addr_range.h).
* TODO: let the PPC/OpenFirmware implementation use those as well.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19739 a95241bf-73f2-0310-859d-f6bbb57e9c96
app_server for this; added a new AS_IS_FRONT_WINDOW command for this.
For example, clicking on the menu bar to bring windows to front in FFM mode
does work now.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19725 a95241bf-73f2-0310-859d-f6bbb57e9c96
screen is now working as expected.
* Only remove DPMS runners when the time is actually supported (previous code would
not have always worked correctly in case the graphics card would not support all
DPMS modes).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19724 a95241bf-73f2-0310-859d-f6bbb57e9c96
Since I have no clue about AGG at this point, I just disabled rendering the glyphs;
instead, their bounding boxes will be shown.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19721 a95241bf-73f2-0310-859d-f6bbb57e9c96
with a lower priority than the current one.
* Further reduced the probability to skip a thread to roughly 4%, that makes around
13 skips per second, and about 40 msecs spend in lower priority threads per second
(with a 3 msec quantum). Might still be too much, but we'll see.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19719 a95241bf-73f2-0310-859d-f6bbb57e9c96
not a penalty to be the first thread in the run queue...
I've reduced it to about 12.5%, but that might still be too much.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19710 a95241bf-73f2-0310-859d-f6bbb57e9c96
by _Banish() (never happened before).
* Instead of sending a new message for every mouse move in a corner, we now keep
one BMessageRunner around and only update its interval; we now also check the
time with no events in CheckCornerInvoke() - this both makes sure that the screen
is not blanked while there is still user activity.
* The screen saver never worked if you didn't set the never-blank corner to something.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19699 a95241bf-73f2-0310-859d-f6bbb57e9c96
* The TimeSlider now sends an update message for ongoing changes, and an
invokation message when the mouse button was released (standard BSlider
behaviour).
* Fixed incorrect initial string when the screen saver should start after
30 seconds of inactivity.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19698 a95241bf-73f2-0310-859d-f6bbb57e9c96
* _ContrainPoint() was broken as it could never change the point it was supposed
to contrain.
* MouseDown() no longer sends a notification message automatically (only if it
changed something)
* MouseMoved() and synchronous MouseDown() will now only send modification messages
if something actually changed (not for every mouse update).
* After key presses, the invokation message is only sent when the value changed.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19697 a95241bf-73f2-0310-859d-f6bbb57e9c96
The problem was that the view's screen clipping was not updated if its frame did not change
because of a resized parent - but that might be needed if the new parent frame reveals a new
portion of that view.
I added a TODO so that if there is a way to test for this case, we only need to invalidate
the clipping if really needed. For now, we always do it.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19695 a95241bf-73f2-0310-859d-f6bbb57e9c96
to make lots of problems (like spawning threads from an interrupt handler...).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19693 a95241bf-73f2-0310-859d-f6bbb57e9c96
passed in, but references it. This broke drawing the workspaces window background.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19689 a95241bf-73f2-0310-859d-f6bbb57e9c96
support. "ftp" will now accept the terminal type beterm, even though our
/etc/termcap file causes ncurses to print some warnings.
* Unlike BeOS, we do have stdbool.h, so we should use it.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19675 a95241bf-73f2-0310-859d-f6bbb57e9c96
reason to slow it down with debug output that much; this will also help investigating
some issues where you just aren't interested in most of the output.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19672 a95241bf-73f2-0310-859d-f6bbb57e9c96
This way, we can still bring up the net in safe mode manually.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19667 a95241bf-73f2-0310-859d-f6bbb57e9c96
so that it's already correct at this point (even though it's currently not
possible to queue data before connecting, it might be in some point in the future).
* ListenReceive() did not initialize the initial send queue sequence of the new
endpoint correctly; it took the values from the wrong endpoint (itself).
* Suppressed the debug output "FIN ack'd" when the connection was not even established
yet.
* Minor debug output improvements.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19666 a95241bf-73f2-0310-859d-f6bbb57e9c96
* ServiceSocketMap now maps directly to service_address objects which now have
gotten a pointer to their owner.
* now uses listen(), and accept() for SOCK_STREAM sockets
* fMinSocket could be wrong.
* use FD_CLOEXEC on all sockets, and the communication pipe.
* removed unused service::type and service::protocol.
* if no family is specified, we now default to AF_INET.
* uses fork()/exec() to actually spawn the servers to not clobber the net_server's
input/output streams.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19663 a95241bf-73f2-0310-859d-f6bbb57e9c96
* NET_STACK_GET_COOKIE copied the wrong data, always returned the socket instead of
the cookie (which is NULL at this point, anyway). Note that this mechanism is only
temporary anyway, as it's highly unsafe.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19661 a95241bf-73f2-0310-859d-f6bbb57e9c96
the segment is sent in this case (as receive/send will currently stack up in a
single thread).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19660 a95241bf-73f2-0310-859d-f6bbb57e9c96
* removed directive #include <cstdlib>
removed directive #include <cassert>
Removed also the use of assert()
as BAlert::Go() returns always 0, or 1, or 2.
renamed cstring to string.h
and cstdio to stdio.h since
our coding style prefers C-style headers.
* Merged the two classes to AlertApplication since
i see no reason to have them both.
* removed some getter functions and used the
private data members instead, since this doesn't
break the "hide the implementation details rule" (i think).
* Modified Signature application from
"application/x-vnd.OBOS.cmd-alert" to
"application/x-vnd.Haiku.cmd-alert"
* Make some defines const char* and int32
according to the corresponding types.
* Changed AlertApplication::SetChoice(const int32 but)
to AlertApplication::SetChoice(int32 buttonIndex).
* The usual coding style clean-up (tabs, spaces, etc).
* Added documentation for more readable code here and there;
and doxygen style documentation for two functions:
AlertApplication::ArgvReceived(int32 argc, char** argv)
and AlertApplication::ReadyToRun()
* Add myself to the authors' list, since that makes good
to my psycology, and makes me more productive!
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19655 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Added a comment about the proper use of the data-file argument.
* Applied Ingo's suggestion to the Jamfile, and it worked out of the box.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19649 a95241bf-73f2-0310-859d-f6bbb57e9c96
a critical error, and definitely no reason to take the server and all GUI apps
down. You could also still log in remotely.
* Now opens and uses the syslog in some rare cases (should become the primary error
channel over time).
* Minor cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19646 a95241bf-73f2-0310-859d-f6bbb57e9c96
message, parses it, and stops/starts the services as needed - it doesn't launch
any actual servers yet, though.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19645 a95241bf-73f2-0310-859d-f6bbb57e9c96
C++ API functions.
* Made some internal headers C++ safe.
* Cleaned up lcl_sv.cpp to only contain what's actually used (in particular,
the IRS_LCL_SV_DB stuff is gone).
* Wrote a basic "services" file and put it into libnetwork.so's resources.
* Updated lcl_sv.cpp to look into the resources if /etc/services doesn't exist.
* Removed the "quasipublic" status of irs_lclsv_fnxt() and made it private.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19644 a95241bf-73f2-0310-859d-f6bbb57e9c96
resource data files into subdirectories; the resource ID is supposed to be unique, anyway.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19643 a95241bf-73f2-0310-859d-f6bbb57e9c96
to be easier extendable with more classes.
* Fixed a bug in the settings that caused updated settings to be appended to the
existing ones (missing BMessage::MakeEmpty()).
* Started services system, doesn't do anything useful yet (inetd replacement).
* Fixed the bug that caused the loopback default netmask to be incorrectly chosen;
removed the temporary fix Bruno introduced before. The same bug has been in
ifconfig where I copied the code from (but wrote it there, too) :-).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19609 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Fixed some more style issues, removed unneeded class member variables.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19604 a95241bf-73f2-0310-859d-f6bbb57e9c96
EDID info from the monitor if available through VESA/DDC.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19588 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Now using the new %f flag to print the level of support.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19584 a95241bf-73f2-0310-859d-f6bbb57e9c96
a very simplistic floating point output routine to snprintf() and friends, for
your convenience.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19583 a95241bf-73f2-0310-859d-f6bbb57e9c96
info to the serial line - not tested yet (as Qemu doesn't support DDC/EDID).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19580 a95241bf-73f2-0310-859d-f6bbb57e9c96
it in your code when you actually want to have debug output, anyway.
* No longer include ddc_int.h when compiled for the kernel or boot loader.
* Cleanup: coding style, and removed the "buffer" variable - floating point values
can be shown in userland either way.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19579 a95241bf-73f2-0310-859d-f6bbb57e9c96
* vm_soft_fault() did not take into account that a cache's source can change while
traversing a cache chain.
* Now, we grab a reference to every cache we get before locking it, and
* no longer get the cache's source without having the cache locked.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19571 a95241bf-73f2-0310-859d-f6bbb57e9c96
for an extra check in vm_cache_release_ref() as the cache shouldn't have any areas
or consumers at this point.
* Fixed a locking problem in vm_cache_remove_consumer(): the cache was acquired after
its lock was gone, so someone else might have released in the mean time.
* if the cache's source is to be replaced, we now no longer release its lock after
having merged it.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19570 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Tested a bit more, and there seems to be some minor drawing problems.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19568 a95241bf-73f2-0310-859d-f6bbb57e9c96
* In grayscale mode, the AccelerantHWInterface now sets the palette correctly.
* HWInterface now has a fVGADevice set by AccelerantHWInterface which will be used
to talk to the VESA driver.
* Completed planar blitting for all 4 planes; we now have a perfect 16 color
grayscale mode when you choose "Standard VGA mode" in the boot loader with
an unsupported graphics card (such as in Qemu).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19567 a95241bf-73f2-0310-859d-f6bbb57e9c96
* The app_server now detects that this mode is being used, and at least correctly copies
the 32bit data to the first plane, meaning we have a monochrome output for now
(it crashed before, as Stefano reported).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19565 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Added an "owner" field that stores the team which created the socket (for netstat only);
we would need a different storage for SIGURG if we ever want to support that.
* Improved netstat address output: now prints "*" instead of INADDR_ANY.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19562 a95241bf-73f2-0310-859d-f6bbb57e9c96
monitor. Their build system and file hierarchy is pretty poor (as well as the
internals of libpcap), but the app itself seems to work well :)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19556 a95241bf-73f2-0310-859d-f6bbb57e9c96
* sockaddr_storage::ss_len is max 255, but the structure itself is shorter; we must
not copy ss_len bytes without checking the length first (duplicate & clone were affected).
* count_iovecs() & get_iovecs() both did not work with empty buffers that don't
have any nodes at all (unlikely case, but should be supported).
* the net_buffer::offset union field was not copied in clone & duplicate.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19555 a95241bf-73f2-0310-859d-f6bbb57e9c96
* the member will now also be shown when dumping a team.
* minor cleanup: moved fill_team_info() into the private functions part of the file.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19551 a95241bf-73f2-0310-859d-f6bbb57e9c96