Commit Graph
100 Commits
Author SHA1 Message Date
Michael Lotz 2ae482f582 Implement the FIONREAD ioctl for sockets. We already supported it in userland
but the kernel part was missing. It is used to query for the buffer size that
can be retrieved using recv(). It returns the same value we use for the read
select().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30786 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-18 01:13:44 +00:00
Michael Lotz 527e6eefef Do not free the descriptor chains and transfer queue head directly when
finishing transfers. The host controller might still be using some of those
structures. In the (unlikely) case that a freed memory chunk would be
immediately re-used and filled with new values this would lead the controller
to either find invalid values and assert a process error or it could follow
invalid list links leading to host system errors. We have to wait with freeing
until the controller processing the next frame to make sure this cannot happen.
The unlikely case should also have been the cause of bug #2481.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30714 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-12 01:55:15 +00:00
Michael Lotz aaf7738499 Cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30713 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-11 23:56:26 +00:00
Michael Lotz 9bc8951dc9 * Simplify the way fragmented transfers are resubmited.
* This also paves the way for a different way to handle transfer freeing.
* Also fixes that errors in reappending would previously not be propagated to
  the caller.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30712 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-11 23:37:30 +00:00
Michael Lotz 60a3c33b87 In case we already did initialize and prepare kernel access, no need to do it
again. Especially not because it'd likely fail because we are now most probably
in the kernel.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30711 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-11 23:32:59 +00:00
Michael Lotz aa3ca9ed30 * Move the actual and maximum length calculation into two inline functions.
* Use those to make sure the size is retrieved correctly in all cases (which
  it wasn't in the short packet tests).
* Don't detect short packets for control transfers as we need the status packet
  to finish the transfer and cannot quit earlier.
* Only check for short packets when we also have the short packet flag set.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30710 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-11 22:35:50 +00:00
Michael Lotz aaeffcf7a6 Adding missing license headers.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30665 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-07 22:23:14 +00:00
Michael Lotz e7fcf08d76 Adding a complete HID parser and report handling facility. This is generic code,
so should be reusable for bluethooth HID as well (which is the same). The only
missing part so far is the logical collections that would allow nicer
enumeration of the report structure but is otherwise not useful. It should
support all of the HID specs except for usage aliases (even long items that
aren't actually defined should just work if they ever are). Not integrated into
the USB specific device framework and there are no actual drivers making use
of provided functionallity. The parsing was tested and works for all of the 3
devices I had available, but actual interpretation of data is not tested as the
driver side is missing. Will close that gap as a next step and then port the
mouse and keyboard drivers to that framework. Eventually a generic driver that
makes unknown fields available to userland apps in some way should be fairly
easy to implement with that.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30664 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-07 22:16:50 +00:00
Michael Lotz f8c16a4508 By popular request: Change the invalid device number and add a comment
explaining the reasons behind it. Oh well, at least the commit count raises...


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30644 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-06 13:09:01 +00:00
Michael Lotz 03a574d8cd * Check for disk extensions before using them (mostly for good practice reasons)
* A CHS read error would previously be hidden by a successful disk system reset.
  Not that it matters much because it'd have resulted in a non-booting system
  anyway.
* Add some more debug output, minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30643 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-06 11:55:19 +00:00
Michael Lotz 2a8d619c9e Add three more error checks for paranoias sake.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30642 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-06 11:47:48 +00:00
Michael Lotz 5d14311137 When doing removal notifications for USB devices, report the hub after the
children. Otherwise a driver that builds up a device hierarchy could run into
trouble when the parent hub is removed before its child devices. Not that there
were any drivers that do so, but it just seems more correct.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30641 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-06 02:03:25 +00:00
Michael Lotz 5c3441b4a2 We are generally interested in those error bits so print them always.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30565 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-02 13:36:49 +00:00
Michael Lotz c8d10a521f * Ensure that we don't clear a combined B_*_KEY as long as one of the
B_{LEFT|RIGHT}_*_KEYs is pressed for shift, command, control and option.
  This fixes bug #3841.
* Only send a B_MODIFIERS_CHANGED message when the modifiers actually changed.
* Minor simplification to only check for the lock keys once.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30538 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-01 18:43:57 +00:00
Michael Lotz 5c8e597e90 Don't try to use disk extensions for non-disk devices (like actual floppies or
emulated ones on CD-boot). One of my laptops returns bogus drive parameters
and another one silently fails the read, previously preventing CD-boot on both.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30389 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-24 23:16:26 +00:00
Michael Lotz c2c3d40c7b Check the status value for validity before waiting for a device. If it has an
invalid value, assume the device is not present. Should fix long boot pauses
in VMWare and maybe also on some hardware.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30381 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-24 16:03:01 +00:00
Michael Lotz 4585fda629 The bootfloppy image has become so fat that it simply doesn't fit the 1.44 size
anymore. This was the case for GCC4 already but is now also true for GCC2. We
might want to look into that again, or we can just ignore it as noone is really
using floppies anymore and for eltorito boot we can live with the 2.88 floppy
emulation.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30312 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-22 00:17:22 +00:00
Michael Lotz 22a6e4bb80 Only use 2 bytes of the signature instead of all four. Even though the specs
clearly state that the other two bytes need to be 0x01 (and they always did,
even back to the very first ATA/ATAPI specs), I have one device here that
doesn't set the sector count register to 1. Since those two bytes are the unique
ones of the signatures anyway, it shouldn't harm to just ignore the others.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30311 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-22 00:14:33 +00:00
Michael Lotz d102012d3a Initialize the device_status field of the CCB. This makes modules using raw
commands work that check this value (like the CDDA filesystem, so audio CDs
work now).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30288 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-21 00:59:24 +00:00
Michael Lotz 8c5cccce46 * Explicitly check device selection success. If device selection failed, assume
there is no device. Should fix long reset timeouts when only device 1 is
  present and therefore device 0 can't be selected.
* In case a device reset error is reported, don't try to identify/use the device.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30286 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-20 22:14:02 +00:00
Michael Lotz 14d5277c14 Remove dead code of ATA bus_manager. Note that the new ATA bus_manager now has
it's own target named ata and doesn't reuse the ide name. Because of that we
can also add it to the build by default.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30271 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-19 23:02:54 +00:00
Michael Lotz ca68245eb7 * Wrote a new infoblock header according to ATA/ATAPI-6 that is cleaner and more
verbose than the old one. Removed the latter.
* Put some of the hardcoded values into defines for more clearity.
* Report more detailed device type for ATAPI devices and report removable
  media based on the bit in the infoblock as well.
* Rename the channel ID attributes back to ide to let the hack in scsi_periph
  work that then publishes the devices under the disk/ata[pi] tree.
* Also disable command queueing for ATAPI devices.
* Remove remnants of CHS support.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30270 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-19 22:15:29 +00:00
Michael Lotz 5a0bca36e0 Unset the debugger variables before evaluating support to ensure that in case of
error we do not reuse old values from a previous KDL session. This ensures that
we don't try to use a USB keyboard if it was un- and replugged on an unsupported
port.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30266 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-19 17:08:09 +00:00
Michael Lotz 00918d55dd Check if we support debug transfers before returning a pipe for debugging. We
only support UHCI for now. In case transfers aren't possible we therefore don't
make PS/2 keyboards unusable in KDL.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30265 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-19 16:05:47 +00:00
Michael Lotz 2c08a10439 * Wait slightly longer before falling into passive poll mode.
* Cause scheduler invokation when we handled an interrupt as the transfering
  thread can continue immediately. This brings small block transfer rates to
  a comparable level to the old IDE bus_manager. For large block transfers there
  is no speed difference at all.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30257 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-19 00:57:57 +00:00
Michael Lotz 5ea617fad1 Only wait for data request in the PIO case as before.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30256 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-19 00:54:42 +00:00
Michael Lotz b6b82488df Apply block count maximum according to device capability. If the device supports
LBA48 we can allow a maximum block count of 65535 as we have a 16bit sector
count field available.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30254 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-18 23:08:44 +00:00
Michael Lotz 6a2bc1027b For packet devices we want to actually return a check condition when the device
indicates an error. Also we then need to pass through the request sense command
to the device. This should fix media status reporting for ATAPI.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30253 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-18 22:37:04 +00:00
Michael Lotz 9323901253 Check the result after sending the packet, other error conditions like media
presence will be triggered there and we use FinishRequest() to catch those.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30250 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-18 21:32:00 +00:00
Michael Lotz 827f849a34 * Reworked device detection, we'll see how well this works...
* Reworked some of the transfer handling after reading the specs.
* Ensure that the device selection bit is set correctly for all commands.
* Generally disable interrupts and enable them only when expecting a DMA one.
* Renamed disk failure to device fault according to specs.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30248 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-18 20:58:33 +00:00
Michael Lotz db9ff5bfb8 Fix wrong preprocessor line.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30141 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-12 22:48:39 +00:00
Michael Lotz 96e5f9e535 * Don't build avcodec with assembly targets using yasm - because it breaks the
build.
* Remove the APE reader from the image as it also depends on the non-working
  yasm rule.

Please don't just leave the build in such a broken state. It's really annoying
when you're held up by stuff like that when you want to work on something.
Just leave changes like those disabled until you have verified that they work.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30111 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-11 00:00:19 +00:00
Michael Lotz 61f3dd4f28 Forgot this in the last commit.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30110 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-10 23:13:25 +00:00
Michael Lotz 33d80ba202 * Rework ATAPI handling, removing all PIO interrupts. As Marcus pointed out the
complication is not really worth it and it would in any case be unreliable
  in the shared interrupt case (even though you could always check the poll
  condition in the interrupt handler).
* Probably broke ATAPI with those changes though.
* Change blocksLeft to bytesLeft to allow using it for arbitrary ATAPI requests.
* Check some more error conditions and actually let those states get through
  to the SCSI layer.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30109 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-10 22:29:59 +00:00
Michael Lotz 8bbb189e27 Extend and rework tracing. If ATA_TRACING is enabled in the tracing config it
will now log all the tracing details with ktrace_printf. Additionally messages
that should always be printed are outputted to the syslog.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30108 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-10 20:47:23 +00:00
Michael Lotz da4c99002d Move the lock into the request.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30100 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-10 08:05:17 +00:00
Michael Lotz 118bb4e750 * Fix race condition between finishing a request and returning a busy status
when the channel is in use, which would cause the SCSI scheduler to stop
  sending requests.
* Indeed we need to return a status from the interrupt handler, as for PIO
  transfers there is no way of knowning whether or not the interrupt at hand
  was ours.
* Add some debug output.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30091 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-10 00:14:07 +00:00
Michael Lotz ac0a972985 Adding mode sense command to retrieve the write protected status. Doesn't work
yet, so not enabled for now.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30082 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-09 20:47:10 +00:00
Michael Lotz 22805aae7f Adding ATAPI support to the new ATA bus_manager. Only tested in QEMU.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30080 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-09 19:53:26 +00:00
Michael Lotz 7997389772 Implement DMA transfers in the new ATA bus_manager.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30069 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-09 15:24:40 +00:00
Michael Lotz 3e907cd4a0 Make it buildable on BeOS again... The last time now, the next time BeOS support will simply be removed.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30064 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-09 13:02:46 +00:00
Michael Lotz eb01fb72f6 * Add the kernel debugger extensions only for the haiku target.
* Acknowledge non-enabled interrupts in UHCI as done in EHCI as well.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30063 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-09 12:35:32 +00:00
Michael Lotz 9611bddd7a Adding DMA detection and generally allow DMA. Not used yet though.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30054 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-09 09:21:46 +00:00
Michael Lotz 6bb01f71bc * Adding/updating license headers.
* Add the standalone ata module to the Jamfile.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30053 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-09 08:54:46 +00:00
Michael Lotz 44039cc605 Additional to the normal detection of device presence, use the trick previously
present in the IDE bus_manager when detecting devices to avoid long timeouts
when waiting for possible ATAPI devices.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30052 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-09 08:44:25 +00:00
Michael Lotz bf9a383524 * Work in progress commit of a reworked ATA bus_manager. It's now object based,
but doesn't really do anything more than before.
* It also replaces everything IDE with ATA counterparts and cleans up a lot
  of the definitions.
* Cleaning up the old ATA bus_manager as well as some license headers missing.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30049 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-08 23:54:52 +00:00
Michael Lotz 3613bfc871 Adding a run_on_exit kernel debugger add-on. It installs a debugger command
"on_exit" with which you can add commands to run when exiting the debugger.
With this you could for example "on_exit sync" and "on_exit shutdown -r" when
your app_server crashed.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30016 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-08 07:45:59 +00:00
Michael Lotz f81f8ddb90 Fix search+replace error introduced with reworking debug output. This should
fix full/lowspeed devices behind high-speed hubs again.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29933 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-05 13:19:32 +00:00
Michael Lotz c43b256828 It turns out that on some BIOSes even if the handover is signaled as successful,
the BIOS doesn't remove it's SMIs. When then initializing the controller this
would trigger all sorts of stuff and for example freeze the system. We therefore
always force off the SMIs, even if the handover didn't fail.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29931 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-05 13:04:30 +00:00
Michael Lotz 674996257b Update the cross-compiler link to the current version.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29873 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-03 01:31:15 +00:00
Michael Lotz e83cf52aa7 Ensure that our stat buffer is available when opening. Otherwise reads could
fail and the O_TRUNC might be overwritten as well.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29520 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-14 16:06:49 +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
Michael Lotz 492e224b8e * Update the signature of _kern_load_image(). It has been changed and therefore
the calls to it always failed.
* Check what error is returned and read the approprite details out of the
  message.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29516 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-14 14:16:17 +00:00
Michael Lotz e94d1badf5 Add the name of the missing symbol to the error message that is sent via port.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29515 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-14 14:14:21 +00:00
Michael Lotz 1320d25ea2 Update the GCC4 optional package incorporating various changes to the builtin
specs and providing a shared libstdc++.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29501 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-13 21:19:12 +00:00
Michael Lotz 5b9d5a2ec9 * Add has_debugger_command() so whether or not a debugger command is available
can be checked.
* Make the usb_keyboard module check the presence of the needed debugger
  commands to avoid the error messages in case of them being unavailable.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29472 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-11 12:17:23 +00:00
Michael Lotz f4041343e6 * This should mostly complete the write_overlay.
* Fix memory leaks here and there.
* Virtualize the dirent list.
* Handle "." and ".." ourselfs as at least iso9660 cannot really know them in
  the readdir call and therefore returns different values than on lookup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29458 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-09 01:26:45 +00:00
Michael Lotz 9b9aa75aac * Implement basic support for the BSound parts of BSoundPlayer. Only one sound
at a time is supported and volume as well as start time are not taken into
  account. For reasons I don't feel like investigating right now all the
  BMediaTrack calls in the BTrackReader end up as pure virtual function calls
  though, so it's unusable for now.
* Fix leaking the temporary buffer in BSound.
* Whitespace cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29374 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-01 23:22:30 +00:00
Michael Lotz 0b2267c921 When searching for audio tracks, we are interested in a raw decoded format, not
a raw encoded format.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29373 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-01 20:57:24 +00:00
Michael Lotz 1b921108a7 Rewrote Sound.h and implemented most of BSound. Completely untested yet as the
BSoundPlayer functionality is yet missing.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29372 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-01 20:56:19 +00:00
Michael Lotz 4085ff6fcf * Check for and discard not enabled interrupts in EHCI.
* Simplify acknowledging interrupts a bit.

Might help with bug #2083 in case the controller would interrupt on a port
change or frame list rollover even though those aren't enabled by us.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29354 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-02-28 16:06:53 +00:00
Michael Lotz 63448c92a4 Better do the check for "." and ".." after stripping off superflous leafs as
otherwise a "rmdir ./" would still have caused the corruption.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29299 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-02-23 22:48:16 +00:00
Michael Lotz 24a7f4c285 Disallow removing the "." entry. We do the same for ".." already and it seems
to be in line with what other systems do as well. Also fixes bug #3476.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29296 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-02-23 19:55:03 +00:00
Michael Lotz 1c053f1771 Obviously forgot this in the last commit...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29292 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-02-22 20:47:14 +00:00
Michael Lotz 6eba063647 * Added simplified possibility to schedule UHCI transfers from within KDL.
* Added debugger commands to resolve usb_ids to pipes.
* Adjusted the physical memory allocator to be usable in a slimmed down mode
  when running inside the kernel debugger.
* Implemented USB keyboard support for KDL through a kernel debugger add-on.
* Added kgetc() and made use of it where previously individual methods were used
  to ensure that reading characters always goes through the kernel debugger
  add-ons and the other methods.

This has some preconditions to meet though:
1) The keyboard must be in the boot protocol (currently the case but needs to
   be revisited once we have a full usb_hid).
2) The keyboard must be attached to a UHCI root port (i.e. not use EHCI or OHCI,
   also not through hubs unless those are USB 1.1).
3) the usb_hid driver has to be opened for this to work. This means that for the
   time between initializing USB and when usb_hid is opened by the input_server
   there is no keyboard support.

Also note that this has no way of detecting hot-plug, meaning that you can't
re-attach your USB keyboard from the hub to the root port once in KDL.

On the bright side of things, since this is a non-destructive mechanism it is
possible to enter and leave KDL without loosing the USB state.

Tested OK in QEMU, not tested on real hardware yet, will see in a few minutes.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29291 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-02-22 20:46:27 +00:00
Michael Lotz f9e9051d3e * Implemented create/create dir/create symlink and remove/remove dir in the
write_overlay and add the necessary infrastructure for it.
* Fix setting permissions through write stat.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29268 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-02-21 02:35:55 +00:00
Michael Lotz c41ac5b0e1 * Remove the original overlay filesystem.
* Add attribute_overlay and write_overlay to the image/floppy instead.
* Mount a iso9660 boot volume with both write and attribute overlay for now.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29261 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-02-19 23:01:42 +00:00
Michael Lotz 66728ad8b8 Implemented write stat.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29260 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-02-19 22:40:30 +00:00
Michael Lotz 77b26c3221 We need a longer filesystem string here to fit in all the possible layers.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29259 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-02-19 22:39:52 +00:00
Michael Lotz 9c67a177a8 No need to relay the attribute calls. Fixes attribute overlays when used with another layer.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29258 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-02-19 21:45:46 +00:00
Michael Lotz 4ef4945001 Rename the trace output as well.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29256 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-02-19 21:13:02 +00:00
Michael Lotz af4245f8a3 Split overlay filesystem into attribute_overlay and write_overlay.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29255 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-02-19 21:11:59 +00:00
Michael Lotz 77fdecfec8 Preparing to split the overlay filesystem into an attribute_overlay and write_overlay module.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29253 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-02-19 20:30:51 +00:00
Michael Lotz a4041d8a6e * Fix missing initialization of the entry size on SetSize() that'd cause some
attribute writes to not be visible.
* Don't read past the current node size when emulating write support.
* Fix writing calculations so that writing actually works as intended.
* Actually follow the linked list when joining write_buffers instead of using
  the same pointer that becomes invalid after the first iteration.
* Small optimizations.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29251 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-02-19 20:03:05 +00:00
Michael Lotz 49004dc730 Remove the additional fs_vnode_ops arugment from get_vnode() again as it's not
needed at all when used as intended. Thanks Ingo for the explanation on how this
is intended to work. Adjusted the overlay fs accordingly and updated/reverted
the changes to the other filesystems.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29250 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-02-19 18:13:01 +00:00
Michael Lotz ef38aa7efc * Add preliminary write support to the overlay filesystem when the underlying
fs is read-only. Not yet fully working, also directory operations like file
  creation/removal are yet missing.
* Add notifications for stat and attribute changes.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29249 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-02-19 01:20:10 +00:00
Michael Lotz b1a58597b9 Add a new fs_volume op all_layers_mounted() that is called when all layers have
been mounted. This is to allow layered filesystems to setup internal data that
requires all the sub/super volumes to be available.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29248 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-02-19 01:16:07 +00:00
Michael Lotz 896e3e9c52 Fix wrong check, thanks Axel :-)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29244 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-02-18 17:52:51 +00:00
Michael Lotz 81915026c1 Make use of the new private B_NO_HANDLED_INFO in the FreeBSD compatibility layer
for now. This is a workaround and should be removed once we have proper
interrupt return values from FreeBSD drivers. Should work around interrupt
storms for shared interrupts with some network cards that use a FreeBSD driver.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29242 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-02-17 21:49:34 +00:00
Michael Lotz 3684e40bb8 * Introduce a (private) flag B_NO_HANDLED_INFO for install_io_interrupt_handler.
It causes the interrupt handler to be inserted at the very end of the list
  instead of at the top. It is intended to be used as a workaround when a
  interrupt handler cannot know if it actually handled the interrupt. This
  should never be used by native drivers. Also if we know that the result is
  not valid because of this flag we won't disable the vector in case we count
  many unhandled interrupts as those numbers are then unreliable.
* Moved B_NO_LOCK_VECTOR to be a private flag as well.
* Made the interrupt handler list a simple manually maintaned singly linked list
  instead of the doubly linked one used with insque and remque as it greatly
  simplifies things for such an easy use case and is more compact.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29241 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-02-17 21:41:51 +00:00
Michael Lotz 3b5507a987 * Added create/write/remove/rename support for attributes to the overlay fs.
* Implemented writing attributes back to attribute files. Not tested or enabled.
* Fix reading attribute dirs, they need a separate cookie that links attribute
  files to the dir index as multiple read-dirs could happen at the same time.
* Fix some obvious bugs in size calculations.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29239 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-02-17 02:05:58 +00:00
Michael Lotz 65cae88fb5 Fix the build.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29236 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-02-16 16:44:51 +00:00
Michael Lotz b962e48498 _kern_open_parent_dir has different semantics for the supplied name argument.
It's supposed to be filled with the entry name of the directory and not as in
all the other cases used as a leaf name to be appended to the dir. This would
lead to some errors with operations based on directory fds in the build libroot
and build libbe and in the end make generate_attribute_stores fail on platforms
that don't have an 0 initialized stack (since the supplied name buffer would
contain garbage later attached to the directory path).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29227 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-02-15 21:10:02 +00:00
Michael Lotz 4b08e1b9e3 Add the host libsupc++ to generate_attribute_stores.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29217 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-02-15 17:08:05 +00:00
Michael Lotz f96525f73f The GCC4 built boot floppy archive is too large, it doesn't fit on a 1.44 image.
Therefore we switch to building a 2.88 floppy image in that case so it's at
least usable to build a bootable CD.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29211 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-02-15 14:54:05 +00:00
Michael Lotz b435702774 * Simplify the build of the CD a bit, just reuse the image scripts as those hold
what we want.
* Remove some more temporary files/directories after the build.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29209 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-02-15 13:30:42 +00:00
Michael Lotz 816f925d39 Add generate_attribute_stores to the tools using the Be API so it builds on other platforms as well.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29206 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-02-15 12:31:33 +00:00
Michael Lotz 66a8699255 Fix build for GCC4 also.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29205 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-02-15 12:27:45 +00:00
Michael Lotz 1ba7617834 Fix build. The header is not needed at all.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29204 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-02-15 12:12:45 +00:00
Michael Lotz e2c3dec923 Preliminary support for building ISO only Haiku CDs. Not working completely
clean yet. Provides a haiku-cd target and creates a bootable image using mkisofs.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29203 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-02-15 02:34:32 +00:00
Michael Lotz bea22f6240 * Add overlay filesystem to the boot floppy and normal image.
* When booting from an iso, mount the boot volume with the overlay layer.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29202 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-02-14 22:51:50 +00:00
Michael Lotz a413108c54 Make the overlay filesystem a standalone module. It can now be mounted as an
additional layer by supplying "-t <actualFileSystem>:overlay" to a mount command.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29201 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-02-14 20:57:15 +00:00
Michael Lotz 3c1b330b3b Add volume ops to the overlay filesystem and prepare it to be a standalone module.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29200 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-02-14 20:32:10 +00:00
Michael Lotz a26c243920 * Adding volume ops to the overlay filesystem.
* Remove the previous method of applying the overlay by flags. In the future the
  overlay can just be mounted as a filesystem layer. This is probably how layers
  were intended to work in the first place.
* Move the filesystem module info and filesystem name from the fs_mount to the
  fs_volume structure. Filesystem layering is done by having multiple layered
  volumes and we want to be able to have a different fs per layer.
* Adapt VFS code to this move.
* Implement mounting layered filesystems. Specifying multiple filesystems
  separated by a colon on mount will cause the layers to be set up and the
  corresponding filesystems to be mounted at that layer.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29199 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-02-14 20:30:49 +00:00
Michael Lotz 3e01561729 Request an overlay for the root vnode as well so attributes are available on the fs root as well.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29197 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-02-14 12:49:41 +00:00
Michael Lotz 6e5f12279d Handle the overlay request flag in publish_vnode() as well.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29196 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-02-14 12:48:44 +00:00
Michael Lotz cbaec88839 Add a generate_attribute_stores build tool. It can be used to recursively
generate attribute stores for attribute overlay. This can be used to generate
ISO only Haiku CDs with attribute support in the future. Note that while they
are mostly bootable they aren't really usable yet because of the missing query
support.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29194 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-02-14 00:28:35 +00:00
Michael Lotz a079780e8a * Add the iso9660 filesystem to the floppy image.
* Allow iso9660 partitions to be boot partitions.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29193 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-02-14 00:11:15 +00:00
Michael Lotz 3f31053904 Skip our attribute directory when reading directories.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29191 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-02-14 00:06:28 +00:00
Michael Lotz 576cd2495d * Compacted some of the code and inlined the DumpRoster implementation into the
class as it's so little code.
* No need to allocate the roster on the heap.
* Add /dev/bus/usb to the device location to make it more clear.
* Add the device location to the non-verbose output as well.
* Put the manufacturer and product strings into quotes to make it clearer that
  those are just strings. Avoids just blank output when a device doesn't provide
  those strings.
* Remove trailing whitespace.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29187 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-02-12 23:05:57 +00:00