Move all package specifics from now abstract Directory to new derived
class UnpackingDirectory and adjust the Volume implementation
accordingly. This concludes the Node/Directory refactoring. Neither
class is aware of packages anymore.
* Move package related methods from Node to new interface UnpackingNode.
* LeafNode and Directory derive from UnpackingNode now.
* Adjust Volume implementation accordingly.
* Introduce interface AttributeDirectoryCookie and currently only
implementation UnpackingAttributeDirectoryCookie. This is an interface
for reading/rewinding an attribute directory.
* Add abstract virtual Node::OpenAttributeDirectory() method that
returns an AttributeDirectoryCookie and implement it for derived
classes.
* In the kernel interface attribute directory hooks use
AttributeDirectoryCookie now.
* Introduce interface AttributeCookie and currently only implementation
UnpackingAttributeCookie. This is an interface for reading/stat()ing
an attribute.
* Add abstract virtual Node::OpenAttribute() method that returns an
AttributeCookie and implemented it for derived classes.
* In the kernel interface attribute hooks use AttributeCookie now. The
attribute directory hooks are unchanged.
* Introduce Version class representing a version.
* Introduce Dependency and Resolvable class and add lists of either to
Package.
* Parse package attributes and add dependencies and resolvables to
Package.
* Add a mount type to Volume and add a respective mount parameter
"mount-type" (values "system", "common", "home", "custom"). Also
implies the shine-through type, if that's not given.
* Introduce class PackageFamily which groups equally named and versioned
packages.
* Add class PackageFSRoot. Each instance represents a possible file
system root (separate roots for different chroot environments). Tracks
Volumes belonging to the same root and their packages.
We don't need to explicitly track the covered/covering nodes per mount
after all. In fs_unmount() we iterate through all vnodes multiple times
anyway and can deal with the covers/covered_by vnodes there. Also, the
root vnode doesn't need to be handled specially anymore.
* packagefs_mount(): Initialize the fs_volume earlier, so it is more
usuable in Volume::Mount().
* The new mount parameter "shine-through" can be used to specify which
shine-through mode shall be used. Can be "system", "common", "home",
and "none". Depending on the setting it is decided which directories
of the underlying file system are bind-mounted on top of ours.
* Fix infinite loop in Volume::_RemovePackageContent().
* Use the RETURN_ERROR() macro in more places to help with debugging.
* Add support function vfs_get_mount_point(), so a file system can get
its own mount point (i.e. the node it covers). Re-added
fs_mount::covers_vnode for that purpose -- the root node isn't know to
the VFS before the mount() hook returns.
* Add function vfs_bind_mount_directory() which bind-mounts a directory
to another. The Vnode::covers/covered_by mechanism is used, so this
isn't true bind-mounting, but sufficient for what we need ATM and
cheaper as well. The vnodes connected thus aren't tracked yet, which
is needed for undoing the connection when unmounting.
* get_vnode_name(): Don't use dir_read() to read the directory. Since we
have already resolved vnode to the covered vnode, we don't want the
dirents to be "fixed" to refer to the covering nodes. Such a vnode
simply wouldn't be found.
* Introduce Vnode flags for covered and covering. Can be used as a quick
check when one doesn't already hold sVnodeLock.
* Rename resolve_mount_point_to_volume_root() to
resolve_vnode_to_covering_vnode().
* Adjust all code that deals with transitions between mount points and
volume root vnodes to generally support covered/covering vnodes.
After failing to start the input server by signature, the fallback
didn't append the input server name to the servers directory returned by
find_directory().
Pull AttributeDataReader and FDDataReader implementations out of
DataReader.cpp into own source files. Thus we can avoid dependencies
(e.g. to fs_attr code) we don't need/want.
On a non-Haiku build platform map openat(), fstat(), and
FileDescriptorCloser to _kern_open(), _kern_read_stat(), and
BuildFileDescriptorCloser respectively, so symlinks can be opened and
stat()ed.
PackageWriterImpl:
* Iterate through attributes using fs_read_attr_dir() instead of
readdir(). Makes it work correctly on the build platform.
* On the build platform look up the system licenses in their source
directory rather than based on find_directory().
Since USES_BE_API is set by default on all libroot_build sources, the
error.cpp
was broken, since it wouldn't be exempt from the error mapping. Define
the
BUILDING_HAIKU_ERROR_MAPPER for it directly in the Jamfile, now.
For the xattr/BSD (untyped) attribute backend implement fs_fopen_attr()
and fs_close_attr(). A new AttributeDescriptor is created. It is
currently used in write_pos() only.
Bring the changes that aren't package management related and the ones
that are but don't take effect as long as they are ignored by the build
system into the master.
Summary of changes:
* Introduce private header <directories.h> with constants for a good
deal of paths that should usually be retrieved via find_directory().
* Replace hard-coded paths by using find_directory() or the
<directories.h> constants (e.g. in drivers and the kernel).
* Add find_directory() constants needed for package management.
* Add __HAIKU_ABI_NAME and B_HAIKU_ABI_NAME macros.
* src/apps/deskbar: BeMenu.* -> DeskbarMenu.*,
DeskBarUtils.* -> DeskbarUtils.*
* Change deskbar menu settings directory from ~/config/be to
~/config/settings/deskbar.
* Other smaller cleanups, changes, and fixes.
* add temperature query support for Juniper, Sumo, Evergreen, and North Islands
* add missing thermal defines for evergreen cards
* northern island cards use the evergreen thermal calculations
* this avoids spurious errno changes leaking into application code,
which could become confused - i.e. 'rm' on a gcc4 build would always
prompt for confirmation
I spend a couple of hours hunting down the behavioural difference
between gcc2- and gcc4-builds and it turns out that the reason for that
is that gcc4's libstdc++-code initializes its own locale data via the
POSIX calls, which trigger (correct) errno value changes, which were the
ones leaking into application code.
* add errno_private.h, which defines the __set_errno() macro with
and without tracing
* instead of setting errno manually, all libroot's code now invokes
__set_errno(), which makes it much easier to trace changes to errno
* redirect glibc's use of __set_errno() to our own version
* update copyrights of locale backend files
Multibyte-support has been rewritten to use ICU as backend.
While this does not necessarily work properly in every aspect
(e.g. the shell still has [different] problems with multibyte-
characters now), it does fix#6263 and #7700.
* add implementations for the following multibyte-related
functions:
btwoc()
mblen()
mbrlen()
mbrtowc()
mbsinit()
mbtowc()
wcrtomb()
wcswidth()
wctob()
wctomb()
* the implementation of the above function live in a symbol
named __<name>, the above symbol names are defined as a weak
alias to the internal ones - TODO: we need to make sure to
only invoked the internal functions (i.e. prepended with __)
in order to avoid problems with symbol preemption.
* deactivate the limited mb implementation we provided before,
as well as respective stuff from glibc
* add actual converter methods MultibyteToWchar() and WcharToMultibyte()
to locale backend and implement them in the ctype subpart
* add management code for maintaining converters referenced by mbstate_t
* the upcoming multibyte-implementation in libroot's ICU locale
backend is going to use this, so it's not good enough to provide
BReferenceable only in libbe.so
* add a few missing/needed header defines
* show GPU temp in millidegrees C on r600/r700
* evergreen+ support soon
* function may be moved to driver long term once testing done
* Each class has a Socket() method to retrieve the underlaying file descriptor
to be able to do the more advanced stuff, if necessary.
* A server socket is yet missing, but the rest is pretty much covered.
BMessageValueNode and BMessageFieldNode weren't correctly setting
the children created flag. This would result in duplicates of
some of the nodes showing up, especially in the case of nested messages.
- Simplified things so each window simply records all its settings into
a BMessage, which is what ultimately goes into the actual UI settings.
- Added settings storage/retrieval to the various sub views of the
team window. This means that the column widths/positioning on all
views hosting a column list view are now also preserved and restored.
Reuse code from tarfs to decompress zlib compressed inline extents.
No idea yet on how to decompress regular extents which are currently
served by the file cache.
Validate the candidate child device a bit more by checking the device ID
and the base and subclass of the device. We don't even know if the child
is still on the PCI bus and some firmware may mark disabled devices by
simply invalidating one of these values. Possibly fixes#8111.
Added TODO concerning that we might not want to fail at all since we
ensure that we matched all devices after routing preparation at which
state we would notice any missing child devices anyway.
While the log of hrev35726 says that unusable page ranges are supposed
to be marked with PAGE_STATE_UNUSED and allocated ones with
PAGE_STATE_WIRED, both actually marked with PAGE_STATE_UNUSED.
When limiting the available memory by reducing the page count it may not
be enough to just limit sNumPages. Depending on the physical memory map
non existing pages between ranges (sNonExistingPages) would still be
added up and later subtracted from the sNumPages, resulting in a wrong
max page count. Also due to the fixed removal of non existing page
ranges the actually available memory would usually not be the amount
set via LIMIT_AVAILABLE_MEMORY.
Instead we now calculate the available memory when going through the
physical memory ranges and limit/exit as soon as we've reached the
desired amount of available memory (also ignoring further non-existing
pages).
When a breakpoint is asked to archive itself to a message, ensure that
the message is empty before writing. Fixes breakpoints past the first one
being broken on restore due to each breakpoint archive containing
the combined settings of all previous breakpoints.
* Having defines in a header that are used only a single time is not helpful.
* B_TRANSLATE in a macro is only expanded when the macro is used, so it escaped collectcatkeys eyes.
* Ensure that we don't underflow the used_pages count and that used
+ cached pages don't overflow max_pages. As there is no locking the
values may change while we read them so that such situations could
arise.
* Make the TODO about the missing locking into a Note explaining the
above, as it is not really worth adding locking here. The stats are
only informational.
Due to a missing entry in Keymap's Jamfile, the localized strings of
ModifierKeysWindow.cpp are not yet included in the corresponding catalog
on HTA.
The attached patch adds ModifierKeysWindow.cpp to DoCatalogs and changes 'Ok' to 'OK'.
Fixes#8127
* break apart encoder type lookup to share with legacy
connector probe
* add function to check for external encoders
* reduce chip requirement to Avivo+ from R600 for register population
- When the user chooses the location of a source file via the file panel,
we now preserve the file panel so it can remember its previous location
when invoked again.
Resolves the other part of #8095.
- When adding files/directories into the file manager, we now also take care
to add them to their respective parent entry lists as well. This allows the
intelligent location functions to actually traverse directories to update
all sibling/parent locations properly as needed.
- Slight changes to ensure that the implicit/explicit status of the location
can be passed around throughout the process. Needed for the above to work.
Resolves the intelligent location portion of #8095.
CFE is used in the upcoming Amiga X-1000 dualcore PPC board.
* Largely inspired by the OF and U-Boot code.
* Still largely stubbed out.
* The loader builds but I don't have a machine to test it. Anyone interested?
* The altered used pages calculation of hrev43168 wasn't correct, as
the inactive page queue may (validly) contain mapped pages as well.
Those would then get counted twice (as they are included in
gMappedPagesCount already).
Instead we calculate the used pages from the total page count, minus
everything we account for otherwise. Doing it this way is possible
without introducing any additional counters, as all the counts to
subtract are already present (as opposed to some of the ones that
would be needed for adding the counts up). Fixes#8109.
* Added TODO regarding the problem of not locking any of the counters
which runs the risk of them getting modified while we haven't yet read
all of them.
Also includes some style fixes and checks on fTopTab which seems to be NULL sometimes.
Does NOT behave well with tabbing yet and still has some drawing bugs.
* Fixed issue introduced in hrev38139: restoring from the line
drawing table was hard-coded to UTF8 Ground table. That is wrong:
the table for currently configured encoding must be set back.
Please look on using of _GuessGroundTable() for details;
* Fixed issue introduced in hrev34894: the semantic of convert_xx_utf8
functions requires the destination length to be set equal to the
target buffer size. Pre-hrev34894 usage of "homebrew" conversion
functions was a bit different - destination length was set to 0.
This made any converstions of input data useless and produce no
visual results;
* Private list of supported encodings (Encoding.cpp) was replaced by
using BPrivate::BCharacterSetRoster functionality. That allows to
use centralized info about encodings in unified with other
applications (Mail & StyledEdit for example) way. Most of currently
enumerated in UTF8.h encodings now available in Terminal.
Note that UCS-2 and UTF-16 are temporary (???) excluded from the
list of encodings supported by Terminal.
* The B_UTF16_CONVERSION was added in system-wide UTF8.h declarations.
This character set is available for enumerating by BCharacterSetRoster
but not listed in public API. Looks like it was just missed;
* Special note about "Text Encoding" entry in Preference File:
So known "shortname" of encoding was used in the preferences file.
For details look on the encodings list in previous version of
Encoding.cpp. As result of migrating to BCharacterSet-provided
resources this list was deleted and is not available anymore.
Instead of it the IANA name of the character encoding targeted
to be used for this purposes. Frankly speaking this part looks
like not working at the moment. The value of text encoding is
hardcoded to "UTF-8" now and is not affected by any operations
in Terminal menu. Note that "shortname" for default encoding
was "UTF8" but the saved value is "UTF-8" - and they are looking
not dependent at all. So this change should not introduce any
kind of backward incompatibility.
* Implement isDefaultable() and SetDefaults() for Antialiasing tab;
* The default color set was out of sync with the actual colors,
it now gets the actual colors rather than hardcoding them;
* Some hardcoded values for defaults related to antialiasing were
differents from actual default values stated in AppServer;
* Revert now works for Antialiasing settings also.
Fix#3331
* attempt AtomBIOS table probe first, then fallback to legacy method if
no connectors found (or table version is too old)
* add function to look up object info on older cards
* dcc still needs some work on old cards
* my X1200 IGP gets video now
* Subclass ConsoleNode as VTConsole
* use it to implement SerialConsole
* Use it as the default console for now to simplify debugging.
VTConsole could probably be factored out into boot/platform/generic/ someday.
* add missing chipset ranges
* add a few more older (X1200) PCI ID's (mostly IGP)
* add code to detect and set frame buffer size on old chipsets
* we get to the connector detection currently and fail due to the
lack of legacy support on my X1200 IGP
* add a few missing PCI ID's
* add a first r520 PCI ID's (commented out for now)
* name a few rare CAYMAN FirePro cards based on info from AMD website
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43238 a95241bf-73f2-0310-859d-f6bbb57e9c96
incorrect behavior while processing certain kinds of messages, and
consequently deadlocks in some apps. Fixes#8101.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43237 a95241bf-73f2-0310-859d-f6bbb57e9c96
use of an attribute may cause an attribute directory access, causing a get_vnode
call that leads to KDL due to the mount not yet having completed as seen in
#8090. Moving the volume_ops initialization in bfs_mount earlier might make this
work, but it is a hack at most, as we can't really know what state the VFS is in
during a mount.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43229 a95241bf-73f2-0310-859d-f6bbb57e9c96