Commit Graph

390 Commits

Author SHA1 Message Date
Rene Gollent
585080d740 Corrected with input from Ingo. Thanks!
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25677 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-28 00:35:33 +00:00
Rene Gollent
aa9d957d57 FreeBSD build fix, please review (needed for definition of FSSH_SEEK_CUR).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25674 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-27 23:02:06 +00:00
Ingo Weinhold
a55e32e52d * Moved fssh_lseek() out of the FSShell namespace.
* Removed debug left-over.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25672 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-27 13:28:58 +00:00
Ingo Weinhold
adfd232086 Allow building zip as build tool. Tested under Linux only.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25534 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-17 23:29:01 +00:00
Ingo Weinhold
6b202f4e3d * Introduced new header directory headers/private/system which is supposed
to contain headers shared by kernel and userland (mainly libroot).
* Moved quite a few private kernel headers to the new location. Split
  several kernel headers into a shared part and one that is still kernel
  private. Adjusted all affected Jamfiles and source in the standard x86
  build accordingly. The build for other architectures and for test code
  may be broken.
* Quite a bit of userland code still includes private kernel headers.
  Mostly those are <util/*> headers. The ones that aren't strictly
  kernel-only should be moved to some other place (maybe
  headers/private/shared/util).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25486 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-14 03:55:16 +00:00
Ingo Weinhold
2988eab3dc Added support for option '-L' (always dereference symbolic links).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25279 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-01 12:43:29 +00:00
François Revol
99734c6841 Missing close() calls just for the sake of it.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25191 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-26 19:35:00 +00:00
Stephan Aßmus
636bff2fd2 Patch by Philippe Saint-Pierre:
* Revised the RLE algorithm used for compressing the boot splash artwork to
  handle uncompressed runs.
* Compress the RGB channels separately for improved efficiency.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24844 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-06 20:10:50 +00:00
Ingo Weinhold
ea39c6377e Might help gcc 2.95.3 to resolve its perceived overloading of the
function.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24824 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-06 03:13:11 +00:00
Ingo Weinhold
7ffafac8d7 * Reorganized the FS interface a little:
- Moved most file_system_module_info hooks into separate structures.
    Those that operate on mounted volumes to fs_volume_ops, those
    operating on a vnode to fs_vnode_ops.
  - Got rid of the fs_volume, fs_cookie, fs_vnode typedefs. We use void*
    again.
  - Instead of a void* volume and node cookie hooks are passed a
    fs_volume and fs_vnode structure pointer, which contain the cookie
    and an ops pointer (fs_volume a few more things).
  - The VFS {new,publish,get,...}_vnode() functions take a fs_volume*
    instead of the volume ID. So does vfs_get_fs_node_from_path().
  - Added type and flags arguments to publish_vnode() and the
    get_vnode() hook and removed the type argument from lookup() hook.
    Added vnode::type using formerly unused bits to store the node type.
    Simplified a few things in the VFS due to the now always available
    node type.
  - Added fs_volume_ops::{create,delete}_sub_vnode() and
    fs_vnode_ops::get_super_vnode() hooks. They are used to support file
    system layers, e.g. allowing to extend an FS not supporting BeOS
    attribute with attribute support. Needs some more work in the VFS.
  - Added fs_vnode_ops::create_special_node() hook for creating special
    nodes (e.g. FIFOs).
* Adjusted the built-in file systems and BFS according to the interface
  changes. Removed all other FSs from the image for the time being.
  We'll see whether further API changes are necessary before porting
  them.
* Adjusted the bfs_shell accordingly.
* Implemented create_special_node() in rootfs to support special nodes.
* Added support for FIFOs:
  - Added syscall _kern_create_fifo() (used by mkfifo()), which creates
    a special node (type S_IFIFO) in the respective file system.
  - When a special node is published the VFS creates a respective sub
    node. Currently only FIFOs are supported.
  - Added a little support for FIFO subnodes by using functionality from
    the pipefs.
  - Added mkfifo to the image. It can create FIFOs in the rootfs, but
    the FIFOs aren't really usable ATM, since they still work like
    pipes, i.e. readers and writers need to have them open at the same
    time.
* Some smaller changes in the VFS:
  - Made the *_CALL macros nicer to use (vargs).
  - Refactored FS entry lookup into new function lookup_dir_entry().
  - create_vnode() no longer just calls the FS create() hook. First it
    looks up the entry and uses open_vnode(), if it already exists. This
    is necessary for two reasons: 1) The FS might not support create()
    while still allowing to open() entries. 2) When the FS has other
    layers on to of it (or the respective node) it might not be
    responsible for opening the node.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24816 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-05 23:05:16 +00:00
Stephan Aßmus
d0fc7c65c6 Patch by Philippe Saint-Pierre:
* Implemented RLE compression for the boot splash images, resulting in
  smaller kernel and boot loader.
* Only the boot loader contains the RLE compressed images, the decompressed
  buffer for the icons is passed to  the kernel via kernel args.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24812 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-05 21:15:43 +00:00
Ingo Weinhold
9181e9cbcf * Used the original size for vmdk Extent Description, not the
sector-aligned one.
* Truncated the image a little too short.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24789 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-04 01:24:26 +00:00
Ingo Weinhold
702421fa41 Fixed incorrect getopt() specification: -c and -H don't have arguments.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24785 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-03 23:54:55 +00:00
Ingo Weinhold
7c529c2415 * Renamed vmdkheader to vmdkimage and changed it to create a full image
by default (new option "-H" will create the header only). Option "-c"
  will clear the image.
* Adjusted build_haiku_image accordingly. vmdkimage is way faster and
  more portable than the former vmdkheader+dd combo.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24784 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-03 21:18:18 +00:00
Axel Dörfler
e63c117011 Looks like some bloke forgot to commit *some* files that should have been part
of r24768 (block cache notification mechanism rewrite).
Thanks for the note, Vasilis!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24772 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-03 14:14:27 +00:00
Stephan Aßmus
f408d9a227 * Renamed placement constants to fit into the existing scheme.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24767 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-03 10:23:03 +00:00
Stephan Aßmus
a6e227c551 * Changed the generate_boot_screen build tool to take placement parameters
for the logo and the icons separately.
* Image data output uses full line width.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24766 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-03 10:19:00 +00:00
Ingo Weinhold
f9bf1195b8 Use a reasonable umask when creating directories.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24744 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-02 12:29:59 +00:00
Ingo Weinhold
fb84047190 Null-terminate the _kern_read_link() result.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24587 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-03-26 04:18:40 +00:00
Ingo Weinhold
baba54f94f Added options -x and -X to the "cp" command, used to specify exclude
patterns for file respectively path names.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24585 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-03-26 04:06:49 +00:00
Ingo Weinhold
b71cab0178 Added the options -x and -X to copyattr. They can be used to specify an
exclude pattern for file respectively path names.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24584 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-03-26 04:05:25 +00:00
Axel Dörfler
5e2ef462ec * Got rid of the duality of FS_WRITE_STAT_* vs. B_STAT_* flags (removed
the former ones).
* Removed extraneous white space.
* net_server settings are now also updated when the size of the 
  file changed.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24552 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-03-24 12:04:47 +00:00
Ingo Weinhold
0ba49c35b3 * BuildPlatformMain supports overriding HOST_LIBROOT on the target now,
so one can set it to the static libroot, if desired.
* Generic attribute emulation:
  - Added build tool rm_attrs, a simple "rm" replacement, which also
    removes the attributes directory for a given file.
  - Added build/scripts/rm_attrs shell script, which wraps the
    invocation of the rm_attrs tool. If it doesn't exist yet, the
    ordinary rm is used.
  - The RM jam variable refers to the rm_attrs script now, i.e. whenever
    something is removed by the build system, the attributes are removed
    too (if the build tool has already been built, that is).
  - Removed the shell function attrrmrf() in build_haiku_image. We use
    the rm_attrs tool instead, if necessary.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24528 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-03-22 21:05:03 +00:00
Ingo Weinhold
c852f04a83 "rm" was leaking the dir FD when failing to read from the dir.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24493 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-03-20 13:34:23 +00:00
Stephan Aßmus
55ef60a5ae * Removed the Copyright image/rendering.
* Fixed the icons image, it was upside down.
* Support the new 24 bit boot screen images in the boot_loader and the kernel.
* Prepare the code for future indexed versions of the boot screen images.
  But the generate_boot_screen tool currently does not generate those.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24449 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-03-18 20:27:47 +00:00
Stephan Aßmus
a3636f92c0 * Removed almost all global variables.
* Release the resources needed for reading the PNGs and storing the image data.
* Change the semantics of the tool, previously it only supported palette mode
  PNGs. Now I am doing the opposite, the tool tries to set up the PNG lib to
  hand out RGB data, even stripping a potential alpha channel.
* Used standard Haiku license header.
* Improved output syntax.
* No longer depends on input image names, even with paths. The generated
  output needs to have fixed names, or else the other source code will break.
* Made the use of the setjmp feature optional, depending on the PNG lib version
  in use. This makes it possible to build the tool on BeOS without updating
  the installed PNG lib.
* Added a few TODOs. Most important is to generate a single palette for all
  three images, and storing the images in their palette representation along
  with the full quality versions, so that they are ready during boot without
  sucking up too many CPU cycles.

NOTE: The header which is now generated is not usable by the rest of the
source code yet, but that will come later. generate_boot_screen is not
integrated yet anyways.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24446 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-03-18 18:15:58 +00:00
Ingo Weinhold
2ca4cee18f * Renamed hbsg to generate_boot_screen and moved it to src/tools.
* Build generate_boot_screen as a build platform tool. It requires
  libpng to be installed.
* Added output file name as fourth argument.
* Replaced unnecessarily complicated
  fwrite(<string>, strlen(<string>),...) and sprintf()+fwrite()
  constructs by fputs() and fprintf() respectively.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24440 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-03-18 14:06:57 +00:00
Stephan Aßmus
c09ac5cf13 patch by Artur Wyszynski (aljen):
Build fix for Darwin host platform.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24431 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-03-18 10:10:50 +00:00
Ingo Weinhold
1149e982f0 Left over debug output.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24358 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-03-11 17:00:55 +00:00
Ingo Weinhold
45eb999ec8 Added "query" and "chmod" (octal, non-recursive only) commands.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24331 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-03-09 17:41:42 +00:00
Ingo Weinhold
0006905bfb Added "--ignore-attributes" switch to the "cp" command.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24330 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-03-09 17:40:04 +00:00
Axel Dörfler
fa28330bbf * Explained under which circumstances vnode_path_to_vnode() will clobber the
buffer of the provided "path" argument.
* Applied patch by Vasilis to fix some warnings when build on Linux (missing
  const on certain functions). We should probably fix the original
  {add|remove}_debugger_command() functions in Haiku as well.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24322 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-03-09 13:43:38 +00:00
Axel Dörfler
9c800a96c0 This should fix the build under Dano/Zeta again, at least it works here:
* added HaikuBuildCompatibility.h to the src/build/* files that are built as
  part of the tools we need to build Haiku.
* Changed HaikuBuildCompatibility.h so that it does not define the things
  that are already in the build headers.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24147 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-02-27 09:03:46 +00:00
Ingo Weinhold
3f6971fd68 Some additions to the existing kludges to fix the build on BeOS.
I tested building libroot.so only (BeOS under VMware is not exactly
fun as a build platform), but I think that should suffice.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24134 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-02-26 02:31:59 +00:00
Ingo Weinhold
cbd4dd196d Patch by Vasilis Kaoutsis: Added missing headers. Fixes the build on
certain Linux distributions.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24109 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-02-25 02:00:12 +00:00
Ingo Weinhold
da51719239 Patch by Samuel Rodriguez Perez:
Fixed building Haiku images on FreeBSD, which was broken since the
introduction of the device support.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24107 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-02-25 01:01:41 +00:00
Stephan Aßmus
50baebaf5f * Fixed warnings.
* Truncated lines to 80 char width.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24073 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-02-23 10:00:52 +00:00
Ingo Weinhold
5d06d46935 Removed debugging leftover.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23990 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-02-17 18:07:25 +00:00
François Revol
32d33c44e5 Fix build on BeOS host, seems it was trying to instanciate a struct stat instead...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23988 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-02-17 17:53:54 +00:00
Ingo Weinhold
3e61704042 axeld + bonefish:
Added parameters --start-offset and --end-offset to restrict the
access of the file system to only that part of the given file.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23970 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-02-17 13:42:27 +00:00
Michael Lotz
d9b0e6addd Two very small changes that help compiling Haiku under Haiku.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23947 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-02-12 00:54:04 +00:00
Ingo Weinhold
ed854de770 Also include info about the syscall return type in the
extended_syscall_info structure.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23916 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-02-07 16:03:00 +00:00
Ingo Weinhold
80b2da5e53 Patch by Samuel Rodriguez Perez: Added support for writing Haiku
directly onto a device under FreeBSD.

I messed around with the code a little (style-fixes, some refactoring)
without being able to compile or test it, so be careful...


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23880 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-02-05 20:54:42 +00:00
Ingo Weinhold
b4f58d8758 Renamed syscall_parameters_info structure to extended_syscall_info (and
kSyscallParametersInfos to kExtendedSyscallInfos) and added "name"
field. Now the classes for syscall kernel tracing don't need to lookup
the syscall function symbol anymore, which speeds up printing/filtering
of those entries dramatically.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23687 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-01-21 15:29:00 +00:00
Ingo Weinhold
19101ba0f4 Generate a kernel array kSyscallParametersInfos containing information
about syscall parameters. Particularly interesting is a type_code field
for each parameter. The mechanism isn't very accurate, but we can
classify everything in string, pointer, and integer types.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23618 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-01-18 19:25:28 +00:00
Jérôme Duval
bbaaf4b7c3 gcc4 requires a cast, so we prepend (void *) to cast every syscall function
fixed syscall.cpp inclusions due to renaming


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23611 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-01-18 17:39:43 +00:00
Axel Dörfler
5d0afa4e4e * cache_detach_sub_transaction() didn't really work: it did not put all needed
blocks into the new transaction, but it would set that transaction on all
  blocks of the old transaction, too. Also, it did not correctly update the
  num_blocks/sub_num_blocks fields of the old transaction. Even worse, it did
  return B_OK instead of the ID of the new transaction...
* get_writable_cached_block() did not correctly maintain the number of blocks
  in the sub transaction.
* write_cached_block() did not free the original_data of a block when it wrote
  it back as part of a previous transaction.
* Changed "cookie" for cache_next_block_in_transaction() to "long", so it will
  be 64 bits when needed.
* Improved the API for detaching sub transactions: you can now get the blocks
  of only the main (parent) transaction as well, added new
  cache_block_in_main_transaction() function.
* BFS now flushes the log when there is no space left for the current
  transaction.
* _WriteTransactionToLog() allocated a "vecs" array, but never freed it.
* _WriteTransactionToLog() now also supports detaching the current sub
  transaction if the whole thing is getting too large (it will now also panic
  if that doesn't work out).
* Removed a useless optimization: making the blocks available in the cache
  isn't really needed, as all blocks in a transaction are locked into the
  cache, anyway.
* Implemented Transaction::WriteBlocks().
* Minor cleanup, removed some dead code, fixed warnings in the fs_shell's
  block_cache when compiled with debug output on.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23610 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-01-18 17:07:18 +00:00
Axel Dörfler
4fc4f2c8ae * Added a transaction listener mechanism to be notified when a
transaction ends or has been aborted.
* BFS now listens for transactions when it created an inode to see if 
  the transaction will be aborted without freeing the inode (in which 
  case it will panic for now).
* Started implementing tracing support, but it's not working yet.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23492 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-01-13 17:18:29 +00:00
Axel Dörfler
7f2453fa9c Added a progress monitor when copying large files (ie. over 1 MB).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23457 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-01-12 23:53:09 +00:00
Ingo Weinhold
34b3b26b3b Merged branch haiku/branches/developer/bonefish/optimization revision
23139 into trunk, with roughly the following changes (for details svn
log the branch):
* The int 99 syscall handler is now fully in assembly.
* Added a sysenter/sysexit handler and use it on Pentiums that support
  it (via commpage).
* Got rid of i386_handle_trap(). A bit of functionality was moved into
  the assembly handler which now uses a jump table to call C functions
  handling the respective interrupt.
* Some optimizations to get user debugger support code out of the
  interrupt handling path.
* Introduced a thread::flags fields which allows to skip handling of
  rare events (signals, user debug enabling/disabling) on the
  common interrupt handling path.
* Got rid of the explicit iframe stack. The iframes can still be
  retrieved by iterating through the stack frames.
* Made the commpage an architecture independent feature. It's used for
  the real time data stuff (instead of creating a separate area).
* The x86 CPU modules can now provide processor optimized versions for
  common functions (currently memcpy() only). They are used in the
  kernel and are provided to the userland via commpage entries.
* Introduced build system feature allowing easy use of C structure
  member offsets in assembly code.

Changes after merging:
* Fixed merge conflict in src/system/kernel/arch/x86/arch_debug.cpp
  (caused by refactoring and introduction of "call" debugger command).



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23370 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-01-11 00:36:44 +00:00