The book is finally done! Getting through the proof copy took so much longer than I ever expected. Luckily, right now I’m out of town with a lot more time on my hands, so I had a lot more time to be able to sit down and get through it. It has been published through Lulu.com so that a great deal more of the profit from the book goes to me instead of the pockets of a book retailer.
There is great news from the 2010 GSoC midterms… Atis' GSoC work thus far on IPv6 has been merged into the main-line Haiku trunk by Axel due to its quality.
Apply the buildfile diff attached to this post, to any post-r37604 sources to give IPv6 a whirl. Please keep in mind the IPv6 code is still extremely early, using IPv6 may result in dreaded KDL’s and other general bugginess. See below for Atis' example usage of the IPv6 modules.
Bug reports on the new IPv6 support can be made on Trac under the Network & Internet » IPv6 component.
The LKL-based Haiku driver has progressed well in the last few weeks.
The set of features already implemented:
mounting and unmounting ext3, ext4 disk images*, both read-only and read-write listing file system attributes (read-only/read-write, file system size, number of files created, number of files remaining to be created, etc.) browsing the contents of any folder on the file system listing file permissions, owner, group, type (directory, symlink, regular file, etc.
Hello readers !
Last week we were at the RMLL (Libre Software Meeting) in France, with François (mmu_man) and Olivier (oco). Haiku has beed holding a booth and giving some talks in this conference for some years now, and it’s nice to go and meet people again.
Hello readers !
As you know, I’m currently working on the locale kit to bring it to a more polished state. The work is going well, and it’s about time for a status update. I’ve been quite busy at school for the whole year and committed few time to Haiku, so I’m catching up with a lot of things.
It's been a month and half since the very beginning of the GSoC coding period, and this is
my first blog post about Services Kit. In fact, it's quite difficult to write interesting things
for both developers and non-developers, I waited to have some materials before writing a report of
my work and ... it's time !
If you manage to build complex applications over the original BeOS Network Kit, you will quickly
face a major problem. Indeed, if it's a good C++ wrapper of the BSD sockets API, it's only a
wrapper, providing useful classes to handle a network link, but no more. Services Kit is here
to provide a more complete set of useful classes which will let developers to get rid of internet
protocols and to only think of the good part of a web service client application.
Porting LKL to Haiku's kernel API may not have been very hard, but convincing Haiku to load a properly built LKL-based add-on has presented some interesting and challenging problems.
The first milestone in this GSoC journey to building a generic file system driver based on Linux kernel code is booting LKL (Linux Kernel Library) inside Haiku.
For the short attention span: it works :)
...
KERN: KDiskDeviceManager::_AddDiskSystem() done: No error
KERN: file system: file_systems/iso9660/v1
KERN: KDiskDeviceManager::_AddDiskSystem(file_systems/iso9660/v1)
KERN: KDiskDeviceManager::_AddDiskSystem() done: No error
KERN: lklhaikufs: unhandled pheader type 0x4
KERN: file system: file_systems/lklhaikufs/v1
KERN: KDiskDeviceManager::_AddDiskSystem(file_systems/lklhaikufs/v1)
KERN: khaiku_env_timer:: LKL_TIMER_INIT
KERN: [lkl-console] Linux version 2.6.29 (gringo@lethe) (gcc version 4.4.4 (GCC) ) #10 Fri Jun 18 14:45:38 EEST 2010
KERN: [lkl-console] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 16256
KERN: [lkl-console] Kernel command line:
KERN: [lkl-console] lkl: IRQs initialized
KERN: [lkl-console] PID hash table entries: 256 (order: 8, 1024 bytes)
KERN: [lkl-console] lkl: timer initialized
KERN: [lkl-console] Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)
KERN: [lkl-console] Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)
KERN: [lkl-console] Memory available: 64900k/65536k RAM, (862k kernel code, 270k data)
KERN: [lkl-console] Mount-cache hash table entries: 512
KERN: [lkl-console] bio: create slab at 0
KERN: [lkl-console] io scheduler noop registered (default)
KERN: [lkl-console] lkl: syscall interface initialized
KERN: [lkl-console] console [lkl_console0] enabled
KERN: [lkl-console] Warning: unable to open an initial console.
KERN: [lkl-console] Switched to NOHz mode on CPU #0
KERN: [lkl-console] System halted.
KERN: khaiku_env_timer:: LKL_TIMER_SHUTDOWN
KERN: [lkl-console] lkl: IRQs freed
KERN: lkl: halt user callback called
KERN: KDiskDeviceManager::_AddDiskSystem() done: No error
KERN: file system: file_systems/nfs/v1
KERN: KDiskDeviceManager::_AddDiskSystem(file_systems/nfs/v1)
...
These are messages from
/var/log/syslog that are generated when Haiku searches for available file system add-ons. One of those drivers is my
lklhaikufs driver. Messages with
[lkl-console] are from LKL (similar to what you see when a normal Linux kernel boots) :)
Up to now an initial version of the following functionality has been made:
new address family module - struct net_address_module_info - for IPv6 implemented, based on code from haiku/src/add-ons/kernel/network/protocols/ipv4/ipv4_address.cpp new protocol module - struct net_protocol_module_info - for IPv6 implemented, based on code from haiku/src/add-ons/kernel/network/protocols/ipv4/ipv4.cpp a patch for the ifconfig tool, that allows to configure interfaces with IPv6 addresses. It works by adding new struct net_interface structures, in a way to similar to how IPv4 address aliasing works.
This lesson finishes up the project that the last two have been about: HaikuFortune, a program which randomly chooses and displays a fortune in a window. It’s not a very complicated one, but it exemplifies a reasonably well-coded real-world project. Although it was code complete as of the end of Lesson 22, it was not finished, missing icons and other resources. This concludes the project with adding resources, a basic discussion on source code licensing, and packaging a program for Haiku.