fe70b87d91
* we now always flush the TLBs after having unmapped some pages. * vm_soft_fault() could traverse to a source cache while it was being collapsed by vm_cache_remove_consumer() - this is now no longer possible as the latter marks the cache as busy when doing so, and the former now tests this flag and locks the cache (via the new fault_acquire_locked_source() function). * if fault_acquire_locked_source() fails with B_BUSY, the current cache is locked again, and tested again for the page - as it might have been moved upwards to it with the destruction of its former source. * The cache delivering the page for vm_soft_fault() is now locked until the end; it can no longer go away before having actually mapped the page into the area. * This also fixes the issue where pages would get lost as vm_soft_fault() put the page in the active list, no matter if its cache still existed. * Also, we now keep a reference of to a cache in case a dummy page is inserted; this makes again sure that it doesn't go away during the execution of vm_soft_fault() (which could even add this page to the free list...). * divided vm_soft_fault() into several smaller functions which should make it much more readable. * Added a "cache_chain" KDL command that dumps the whole chain until the bottom when giving a pointer to a vm_cache as parameter. * now usually call vm_cache_acquire_ref() before map_backing_store(), even though it shouldn't be really needed (I added it for debugging purposes). * Some minor cleanup. * NOTE: a major problem still persists: when removing a vm_cache, it's possible that some of its pages are still mapped, and there is currently no mechanism to get rid of these mappings! I've added TODO comments into vm_cache.c where appropriate. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20028 a95241bf-73f2-0310-859d-f6bbb57e9c96 |
||
---|---|---|
3rdparty/vmware | ||
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. Configuring =========== 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) When building on Linux and other non-BeOS platforms "haiku" is the only supported target platform, so you don't need the "--target" parameter. 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. 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.