0b69689a18
although it put the freed space in the free list. Alternating invocations of alloc_...() and free_...() would thus increase the header space unboundedly. * Unified the way a data_header and data_node access the header space. Originally data_header::data_space and data_node::header_space had to be kept in sync, which some functions failed to do. Introduced a header_space structure, which is located in data_header and referenced by data_node, so that accessing it either way does always keep both structures in sync. * Removed the special handling for the data node created with a buffer. Since remove_{header,trailer}() and trim() could remove it without knowing, the last reference to the first data header would be freed prematurely, causing operations on freed memory, and in the end a second free which screwed the object cache's free list. This crashed Haiku e.g. when running OpenSSH's "forwarding" test. Now the first created node is just a node like any other. It's allocated in the data header, too. * Changed the mechanism how data nodes are allocated. Now they will always be allocated on a header associated with the buffer for which they are created. This fixes a race condition when freeing them. They would otherwise modify the free list of a header which might be accessed by another thread at the same time (added a TODO explaining how the old code could possibly be fixed). Also squashed several TODOs related to running out of header space when allocating a node. If the buffer runs out of header space, it will simply allocate a new header, now. * Dealt with some TODOs regarding reverting the buffer to its previous state when running out of memory after allocating a few nodes. * Added several TODOs. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25256 a95241bf-73f2-0310-859d-f6bbb57e9c96 |
||
---|---|---|
3rdparty | ||
build | ||
data | ||
docs | ||
headers | ||
src | ||
configure | ||
Jamfile | ||
Jamrules | ||
makehaikufloppy | ||
ReadMe | ||
ReadMe.cross-compile |
Building on BeOS ================ For building on BeOS you need the development tools from: http://haiku-os.org/downloads Please always use the most recent versions. They are required to build Haiku. Building on a non-BeOS platform =============================== Please read the file 'ReadMe.cross-compile' before continuing. It describes how to build the cross-compilation tools and configure the build system for building Haiku. After following the instructions you can directly continue with the section Building. Configuring on BeOS =================== Open a Terminal and change to your Haiku trunk folder. To configure the build you can run configure like this: ./configure --target=TARGET Where "TARGET" is the target platform that the compiled code should run on: * haiku (default) * r5 * bone * dano (also for Zeta) The configure script generates a file named "BuildConfig" in the "build" directory. As long as configure is not modified (!), there is no need to call it again. That is for re-building you only need to invoke jam (see below). If you don't update the source tree very frequently, you may want to execute 'configure' after each update just to be on the safe side. Building ======== Haiku can be built in either of two ways, as disk image file (e.g. for use with emulators) or as installation in a directory. Image File ---------- jam -q haiku-image This generates an image file named 'haiku.image' in your output directory under 'generated/'. VMware Image File ----------------- jam -q haiku-vmware-image This generates an image file named 'haiku.vmdk' in your output directory under 'generated/'. Directory Installation ---------------------- HAIKU_INSTALL_DIR=/Haiku jam -q install-haiku Installs all Haiku components into the volume mounted at "/Haiku" and automatically marks it as bootable. To create a partition in the first place use DriveSetup and initialize it to BFS. Note that installing Haiku in a directory only works as expected under BeOS, but it is not yet supported under Linux and other non-BeOS platforms. Bootable CD-ROM Image --------------------- * UNSUPPORTED yet * This _requires_ having the mkisofs tool installed. On Debian GNU/Linux for example you can install it with: apt-get install mkisofs On BeOS you can get it from http://bebits.com/app/3964 along with cdrecord. Creating a bootable CD requires burning 2 tracks on a single CD. The first track is an El-Torito bootable ISO file-system containing a boot floppy image, and is created with: jam -q haiku-boot-cd This generates an image file named 'haiku-boot-cd.iso' in your output directory under 'generated/'. The second track is the raw BFS image 'haiku.image' in 'generated/' created with: jam -q haiku-image Under Unix/Linux, and BeOS you can use cdrecord to create a CD with: cdrecord dev=x,y,z -v -eject -dao -data generated/haiku-boot-cd.iso generated/haiku.image Here x,y,z is the device number as found with cdrecord -scanbus, it can also be a device path on Linux. Windows users will find '3rdparty/nero/haiku-cd.cue' useful. Since the CD has two tracks it is not easy to test it from an emulator. Instead it is simpler to use the 'haiku.image' as CD image and the floppy image 'haiku-boot-floppy.image' to boot from it. For Qemu: qemu -cdrom generated/haiku.image -fda generated/haiku-boot-floppy.image -boot a Building Components ------------------- If you don't want to build the complete Haiku, but only a certain app/driver/etc. you can specify it as argument to jam, e.g.: jam Pulse Alternatively, you can 'cd' to the directory of the component you want to build and run 'jam' from there. You can also force rebuilding of a component by using the "-a" parameter: jam -a Pulse Running ======= Generally there are two ways of running Haiku. On real hardware using a partition and on emulated hardware using an emulator like Bochs or QEmu. On Real Hardware ---------------- If you have installed Haiku to its own partition you can include this partition in your bootmanager and try to boot Haiku like any other OS you have installed. To include a new partition in the BeOS bootmanager run this in a Terminal: bootman On Emulated Hardware -------------------- For emulated hardware you should build disk image (see above). How to setup this image depends on your emulater. A tutorial for Bochs on BeOS is below. If you use QEmu, you can usually just provide the path to the image as command line argument to the "qemu" executable. Bochs ----- Version 2.2 of Bochs for BeOS (BeBochs) can be downloaded from BeBits: http://www.bebits.com/app/3324 The package installs to: /boot/apps/BeBochs2.2 You have to set up a configuration for Bochs. You should edit the ".bochsrc" to include the following: ata0-master: type=disk, path="/path/to/haiku.image", cylinders=122, heads=16, spt=63 boot: disk Now you can start Bochs: $ cd /boot/apps/BeBochs2.2 $ ./bochs Answer with RETURN and with some patience you will see Haiku booting. If booting into the graphical evironment fails you can try to hit "space" at the very beginning of the boot process. The Haiku bootloader should then come up and you can select some safe mode options. Docbook documentation ===================== Our documentation can be found in 'src/documentation/'. You can build it by running 'jam' in that folder. The results will be stored in the 'generated/' folder.