Commit Graph

217 Commits

Author SHA1 Message Date
Kyle Ambroff-Kao
e1b7c1c7ac storage/SymLink: Fix Be API regression in ReadLink
After this patch, "UnitTester BSymLink" passes.

BSymLink::ReadLink() in BeOS would always return the length of the
link unless an error occurred. Before this patch, Haiku instead seemed
to emulate posix readlink() behavior, returning the number of bytes
copied into the output buffer.

BeOS also did not guarantee that the string written into the output
buffer is NULL terminated if the output buffer cannot contain the
entire link contents, but the Haiku implementation does since it is is
a basic safety issue.

This patch fixes this and updates the Haiku API docs to describe the
behavior explicitly.

Fixing this required changing behavior in bfs_read_link, which
required changes in many more places.

docs/user/storage/SymLink.dox:
src/kits/storage/SymLink.cpp:
* Don't return B_BUFFER_OVERFLOW if the provided buffer is not large
  enough to hold the link contents.
* Update documentation to clearly describe behavior.

src/add-ons/kernel/file_systems/bfs/kernel_interface.cpp:
* Change bfs_read_link() to always return the link length. This is
  called by common_read_link in the VFS, which is called by
  _kern_read_link().

src/add-ons/kernel/file_systems/btrfs/kernel_interface.cpp:
src/add-ons/kernel/file_systems/exfat/kernel_interface.cpp:
src/add-ons/kernel/file_systems/ext2/kernel_interface.cpp:
src/add-ons/kernel/file_systems/iso9660/kernel_interface.cpp:
src/add-ons/kernel/file_systems/netfs/client/netfs.cpp:
src/add-ons/kernel/file_systems/nfs/nfs_add_on.c:
src/add-ons/kernel/file_systems/ramfs/kernel_interface.cpp:
src/add-ons/kernel/file_systems/reiserfs/Iterators.cpp:
src/add-ons/kernel/file_systems/reiserfs/Iterators.h:
src/add-ons/kernel/file_systems/reiserfs/Volume.cpp:
src/add-ons/kernel/file_systems/reiserfs/Volume.h:
* Update the implementation of read_link for these filesystems. Some
  of them were incorrect, and some had just copied the posix behavior of
  bfs from before this patch.
* Use user_memcpy in ext2_read_link()
* Use user_memcpy in nfs fs_read_link()
* Use user_memcpy in reiserfs StreamReader::_ReadIndirectItem and
  StreamReader::_ReadDirectItem
* Remove unused method Volume::ReadObject in reiserfs.

src/add-ons/kernel/file_systems/packagefs/nodes/UnpackingLeafNode.cpp:
src/add-ons/kernel/file_systems/packagefs/package_links/PackageLinkSymlink.cpp:
* Update UnpackingLeafNode::ReadSymlink and
  PackageSymLink::ReadSymLink() to set the bufferSize out parameter to
  the symlink length. Both of these are called by
  packagefs_read_symlink.
* Use user_memcpy

src/add-ons/kernel/file_systems/netfs/client/netfs.cpp:
* netfs seems mostly unimplemented. Added a FIXME note for future
  implementers so that they know to implement the correct behavior.

src/system/libroot/posix/unistd/link.c:
* readlinkat() was just wrapping _kern_read_link() because before this
  patch it had expected posix behavior. But now it does not, so we
  need to return the number of bytes written to the output
  buffer.

src/build/libroot/fs.cpp:
* Update _kern_read_link() in the compatibility code to emulate the
  Haiku behavior on the host system. This is done by using an
  intermediate buffer that is guaranteed to fit the link contents and
  returning its length. The intermediate buffer is copied into the
  output buffer until there is no more room.

src/tests/kits/storage/SymLinkTest.cpp:
* This patch also resolves some test failures similar to those
  resolved in ee8cf35f0 which fixed tests for BNode. The tests were
  failing because Haiku's error checking is just better.

  BeOS allowed constructing a BSymLink with BSymLink(BDirectory*,
  const char*) with the entry name of "". The same is true of the
  equivilant SetTo() method. The BSymLink object will appear valid
  until you attempt to use it by, for example, calling the ReadLink
  method, which will return B_BAD_VALUE.

  Haiku does a more appropriate thing and returns B_ENTRY_NOT_FOUND,
  for this constructor and the equivilant SetTo(BDirectory*, const
  char*) method. This patch fixes these test assertions to match Haiku
  behavior.

docs/develop/file_systems/overview.txt:
* Add notes for future filesystem driver implementers to call this
  mistake when implementing fs_vnode_ops::read_symlink.

docs/user/drivers/fs_interface.dox:
* Fix documentation for fs_vnode_ops::read_symlink

Change-Id: I8bcb8b2a0c9333059c84ace15844c32d4efeed9d
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2502
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
Reviewed-by: Axel Dörfler <axeld@pinc-software.de>
2020-04-30 10:13:41 +00:00
PulkoMandy
e3952a44cd sparc: notes on network booting 2020-03-16 09:53:14 +01:00
Adrien Destugues
6a30d84f3c add some docs for agp_gart and intel_extreme drivers
Not a lot of info there yet, but it's a start.
2020-03-13 15:42:03 +01:00
Alexander von Gluck IV
79310ea4e1 docs/develop: Add doc on debugging bootloaders with gef
Change-Id: Ib2d161adf75904f592286451279c77fb61ea52c2
2020-01-24 15:13:29 -06:00
PulkoMandy
56f9c76088 sparc: boot mmu support
Get enough of the mmu working to be able to allocate memory.

Unlike on PowerPC, we get both address and size as 64bit values. So
adjust of_region to allow this.

Also unlike the PPC port, we do not drive the hardware directly, instead we
rely on the openboot primitives to manage the translation table. This
allows staying independant of the hardware, which is a good idea at
least for the bootloader (we can do actual hardware things in the
kernel)

Change-Id: Ifa57619d3a09b8f707e1f8640d8b4f71bb717e2a
Reviewed-on: https://review.haiku-os.org/c/haiku/+/1482
Reviewed-by: Alex von Gluck IV <kallisti5@unixzen.com>
2020-01-18 03:32:29 +00:00
Adrien Destugues
6ca34a59b5 Add some notes on how to use PCI serial ports for serial debugging. 2020-01-05 10:42:37 +01:00
Adrien Destugues
a5483ebd76 sparc: add some development notes 2019-11-24 13:38:15 +01:00
Adrien Destugues
ae24179211 Start documentation for filesystems
We have quite a few GSoC projects around this, it would make sense to
have some documentation for people attempting them.

Add some generic overview of filesystems and how to test them.
2019-10-08 18:57:28 +02:00
PulkoMandy
c90c06ef59 sparc: documentation about the boot process and useful commands
I didn't do anything with sparc for a few weeks (you don't want this
machine running when temperatures already are over 30°...), and I wastd
some time finding back some of the useful information, such as commands
to boot and debug, load and execution address of the bootloader program,
etc. So let's keep these in the documentation directory.

Change-Id: I293e0eea3063d410d66f9b2397c2cf0bdbfc6753
Reviewed-on: https://review.haiku-os.org/c/1581
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2019-07-13 01:29:05 +00:00
Adrien Destugues
506f9764d4 Some notes about openboot.
As I keep looking for the commands to do anything...

Next step is to figure out network booting and set up an easy way to
test haiku_loader.
2019-05-19 14:31:21 +02:00
Augustin Cavalier
e661fdd17d repositories: Move the README into the appropriate docs/develop directory. 2019-05-14 19:00:18 -04:00
Augustin Cavalier
18a8edbf0e docs/develop: More reorganization.
* There is now a 'busses' folder, and the extant USB/SDHCI/Bluetooth/etc.
   docs now live in it, instead of various other places.
 * kernel/ports is now kernel/arch, like it is in src/system.
   SPARC documentation is now in there, too.
 * VM files (these are rather outdated) are now in kernel/vm.
 * SCSI ASC info removed, this is easily available online and
   it doesn't seem to be very relevant.
2019-03-30 18:00:46 -04:00
PulkoMandy
4b2da9c371 glibc: cleanup long double support
- Add 128 bit long double support from current glibc and a few headers
  they need
- Move the existing 80 bit float support in a sub directory of generic,
  it is not universal to all archs (see file added in docs/develop/arch).
  Also include some new .h files for x86 that are needed after these
  changes (from newer versions of the glibc).
- Adjust Jamfiles for m68k, x86 and x86_64 to use the 80bit format
- Do not adjust arm jamfiles, it was wrongly using 80bit long double and
  should be fixed to use 64bit instead (which means the double functions
  can be used with aliases)
- Do not adjust powerpc jamfiles, because it uses yet another format and
  we build it without long double support anyways.

Note that I moved only the files that were creating compile errors,
quite likely more of the s_* and e_* files need to be moved to the
specific directories, see glibc list here:

https://sourceware.org/git/?p=glibc.git;a=tree;f=sysdeps/ieee754/ldbl-128
https://sourceware.org/git/?p=glibc.git;a=tree;f=sysdeps/ieee754/ldbl-96

Change-Id: Ic2d8a454ba9a3b99638e4fbb63daf02df0fea403
Reviewed-on: https://review.haiku-os.org/c/1143
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2019-03-26 20:40:50 +00:00
PulkoMandy
6823ced505 Add some notes about the sparc architecture.
Change-Id: I2fd042981d2771abdedcd3648e2eeb6e06db4253
Reviewed-on: https://review.haiku-os.org/c/1142
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2019-03-03 21:01:12 +00:00
Adrien Destugues
5629675a32 sparc: add defines and minimum set of required files
Gets the stage0 bootstrap to run.
Imlementation is probably nonsense at this point.

Change-Id: I10876efbb54314b864c0ad951152757cdb2fd366
Reviewed-on: https://review.haiku-os.org/c/1061
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2019-02-23 16:30:50 +00:00
Adrien Destugues
8b6f4cb290 Update SDHCI and device driver docs
Change-Id: Ic64b501b7166dd718aaf12412833f912e23bc6bf
Reviewed-on: https://review.haiku-os.org/c/967
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2019-02-16 21:46:56 +00:00
Humdinger
e705c841d7 Fix URLs in the development docs
* Fix dead links where possible
* Use online instead of local links to the BeBook

Change-Id: I250117dcccc0026925c56545cca7e3b4467f2c78
Reviewed-on: https://review.haiku-os.org/c/811
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
2019-01-29 16:12:55 +00:00
Andrew Lindesay
3369e03d5c HaikuDepot: Process and Data-loading Improvements
This change is a reshuffle of the backend processing involved in the
aquisition of data from servers including the pull-down and load of
HPKR data as well as the pull-down and load of data from the
HaikuDepotServer (HDS) system.  The driver for this change is to
implement an initial implementation of a progress bar for the
loading of data as the application starts.

The following are notable changes;

* Removed some previously attempted 'functional style' logic in the
  model which didn't fit well with C++
* Use of the base-url in the logical mapping from HDS and HD data is no
  longer required and has been removed
* Some logging has been improved making it clearer which part of HD
  is producing the logging which in turn helps with debugging issues
* List class has been modified to more cleanly support sorted lists
  and binary searches; tests have also be updated accordingly
* Reorganise and tidy-up of the data-loading processes' structures
* The local repository update (HPKR) and data-load occur in background
  processes now in the same system as the HDS data-load - this has been
  crudely shifted from the MainWindow to new Processes and incorporated
  into the background processing system
* The 'state-machine' background process runner is now replaced with a
  'coordinator' style approach that can more easily handle the new
  processes related to HPKR loading.
* Progress for loading processes is shown in the main window in the
  WorkStatusView - this is flickering a bit, but basically works
* Added some documentation regarding how Processes work in the system
* The "Refresh Repositories" menu item now also updates data from HDS
* The "Refresh Repositories" menu item is disabled when the background
  processes are running that update the repository data

Some further refinement would be good, but this change is large enough
for one round of improvements.  There is an issue that the status bar
is used for screenshot display as well as this data-loading, but that
was the case before so it is something that can be dealt with later if
it is a problem.

Change-Id: I7668307645e3aabaf7e4a6e37e2cca80cc0f489e
Reviewed-on: https://review.haiku-os.org/770
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2018-12-17 19:31:25 +00:00
Axel Dörfler
efafab643c Deskbar: Resizable tray
* Adds max width and height arguments to
  instantiate_deskbar_(item|entry).
* Old applications just stay with a 16x16 scaled icon, though.
* All used apps within the repository are converted to the new call
  besides the input_server input method icon (that will need further
  API changes in the input_server).

Change-Id: I29cc439396917be2c24135888459d31364997dff
Reviewed-on: https://review.haiku-os.org/656
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2018-11-04 19:00:49 +00:00
Augustin Cavalier
f2015c2f81 boot/platform/cfe: Remove, unused.
All platforms it was theoretically useful for also have U-Boot.
OK'd by mmu_man.
2018-08-11 20:21:12 -04:00
krish_iyer
0ea0138965 SDHCI MMC Driver Documentation
Change-Id: I4bbe302fabd21133a9c03b9e48a407db8afbc70e
Reviewed-on: https://review.haiku-os.org/452
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
2018-08-10 12:08:35 +00:00
Leorize
91791df982 docs/develop/packages/TODO: add missing part
Sorry, apparently I was half-asleep and missed this part

Change-Id: I888a975ae7ff30d1039f466e63d37c30b94d3739
Reviewed-on: https://review.haiku-os.org/444
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2018-08-06 23:40:47 +00:00
Augustin Cavalier
b456e5d055 docs/develop/net: NetBSD has an official GitHub mirror now. 2018-08-01 18:23:15 -04:00
Augustin Cavalier
61206a24c9 build: Cleanup of libgnuregex usage.
John's revert of my removal commit dragged back a bunch of cygwin/sunos
cruft, as well as re-adding RegExp.cpp to the host libshared, that we don't
need.

Instead, remove this and add libgnuregex_build to just the tools/keymap
link alongside the FreeBSD gnuregex case.
2018-03-07 18:04:31 -05:00
Leorize
03d384bbfb docs/develop/packages: convert wiki to rst
Cleaner syntax compared to MediaWiki, more features than Markdown, while
still looks good on plain text.
2018-03-03 20:22:46 +00:00
John Scipione
940a3a2322 Revert "build/libgnuregex: Remove."
This reverts commit ca087b0532.

Mac OS X requires libgnuregex for Keymap
2018-02-16 16:45:11 -08:00
Augustin Cavalier
e56d7050a3 docs/develop/packages: Update links and rename index.wiki to README.wiki.
Now this page is rendered when you open the directory on GitHub,
and you can use the links to open any of the files.
2018-01-10 16:54:32 -05:00
Augustin Cavalier
7a988ea15b docs/develop/packages: More fixes to syntax. 2018-01-10 16:48:08 -05:00
Augustin Cavalier
fc2b04e7e4 docs/develop/packages: Convert wiki files to MediaWiki syntax.
This is what GitHub actually is rendering pages as.
2018-01-10 16:37:28 -05:00
Augustin Cavalier
5492447a60 docs/develop: Migrate Package Management docs from Trac.
Still in Trac Wiki format (GitHub renders this well enough.)
2018-01-10 16:19:41 -05:00
Augustin Cavalier
42877d24cf makefile-engine.html: Does not belong in docs/develop.
docs/develop is for documentation about Haiku's internals. The Makefile-Engine
is public API. For now, put it in docs/misc.
2018-01-10 16:12:15 -05:00
Augustin Cavalier
e81a954787 docs/develop: Mass directory restructure.
Now vaguely follows the tree structure of "src", with the exception of
directories that described subsystems spanning more than one "kit" or
"server" (e.g. "media", "midi", "bluetooth") -- these have been left as their
own top-level directory within docs/develop.
2018-01-10 16:12:14 -05:00
Augustin Cavalier
cdf0ad6a80 docs/develop: Delete some more old/obsolete directories. 2018-01-10 16:12:14 -05:00
Augustin Cavalier
ca087b0532 build/libgnuregex: Remove.
It was needed on macOS for a time when BUrl used regexes for parsing.
Now it does not, and so we can remove libshared's RegExp from build
libshared, and thus also libgnuregex.
2017-12-24 12:27:47 -05:00
Augustin Cavalier
d3b7157201 docs/develop: Remove obsolete "net" documents.
They've been "obsolete" since 2006, so they must be extra-obsolete
by now :-)
2017-12-20 20:42:57 -05:00
Augustin Cavalier
e7b5f0a6f7 docs/ikteam: Delete most files.
The Interface Kit is long since "99% functional", so lists of modules
with what's-implemented-what's-not are not really helpful anymore.

The one (rather lengthy) file describing the unit testing system
set up by the IKTeam is indeed useful, so keep that.
2017-12-20 20:28:57 -05:00
Augustin Cavalier
f009c69deb docs/develop/input: Delete useless cruft.
The only thing of any real use in this directory was the Be Newsletter
article, and the objdump from BeOS R5 (at least I guess that's what it is...)
so I kept those.
2017-11-15 17:52:50 +01:00
Andrew Lindesay
f943fa465c JSON Parser : Documentation migration
This commit migrates the JSON overview documentation that
was recently added from Markdown to Doxygen.
2017-05-26 21:05:14 +12:00
Andrew Lindesay
e6fa1be5fd Implementation of JSON Streaming Parser
Addition of missing files from previous commit
2017-05-13 19:35:51 +12:00
luroh
a09b074d3e Cleanup app_server built-in fonts
We bundle bitstream charter as a default font to use when nothing else
is available. We also used to bundle a Courier font, but it does not
work properly.

- Fix the license for Bitstream Charter, to include just the license and
no extra text.
- Add said license to AboutSystem
- Remove the Courier font from the package and from the source tree.

Fixes #11696.
2017-04-30 13:55:36 +02:00
Humdinger
4135f1fd20 Update makefile-engine doc to v2.6
Grammar, formatting, updated paths etc.
2017-03-13 19:33:40 +01:00
Dario Casalinuovo
41acdd1d90 media_kit: Move some files and headers under docs/develop/media 2017-01-16 22:53:44 +01:00
Augustin Cavalier
87534026de docs/develop: Create a 'bluetooth' directory.
Presently contains only oco's final blogpost, for posterity's sake.
2016-10-19 19:18:14 -04:00
Andrew Lindesay
fa2dd9c45f BPackageInfo::Parser: Validate URL strings.
Fixes #12710.

Signed-off-by: Augustin Cavalier <waddlesplash@gmail.com>
I fixed the modifications to the Jamfiles in src/bin, they were all wrong
in the patch.
2016-06-18 18:40:07 -04:00
Augustin Cavalier
896c0b7543 Move doc from src/kits/network to docs/net.
Thanks Adrien for reviewing!
2015-06-30 09:34:02 -04:00
Alexander G. M. Smith
143edb7460 docs: makefile-engine: add missing HTML tags.
Fixes #12063.

Signed-off-by: Augustin Cavalier <waddlesplash@gmail.com>
2015-06-01 18:28:17 -04:00
Alexander von Gluck IV
9f76848eca doc/rpi1: Fix old reference to old FDT blob 2015-03-07 16:52:43 -06:00
Alexander von Gluck IV
1ac3785a72 doc: Update rpi1/rpi2 documentation. 2015-03-07 16:50:51 -06:00
François Revol
74f2b62e3c ARM: Mention an interesting page about floating point
There are so many options on ARM...
2014-11-01 01:09:21 +01:00
Ithamar R. Adema
f1d7e394e4 ARM: update TODO list once again
* stackcrawl is implemented
* B_MAX_CPU_COUNT is no more
* add some bootloader TODOs
2014-09-07 21:14:23 +02:00