sched: core: added setup for the FIFO scheduler

FIFO algorithm:
	The FIFO scheduler is a priority independant scheduler. Threads
	are sorted in their queue's based on the time of insertion. This
	way starvation is kept to a minimum and threads can still execute
	in a real time context.

Signed-off-by: Michel Megens <dev@michelmegens.net>
Merge branch 'master' into sched
sched: fifo: implemented the FIFO algorithm.

kernel/sched/fifo.c:
	Implemented the FIFO (First In First Out) scheduling algorithm.
	The FIFO scheduler should be used in real time systems where
	sorting on a priority basis is not important.

Signed-off-by: Michel Megens <dev@michelmegens.net>
sched: core: fixed a entity dep in thread init

The thread data field initialiser used to set the next pointer in the
scheduling entity to NULL, but depending on the used algorithm, the
entity might not have a next pointer.

Signed-off-by: Michel Megens <dev@michelmegens.net>
Merge branch 'sched'

	* FIFO scheduler
Merge branch 'i2c'

	* I2C core
	* ATmega I2C bus
ETA/OS 1.1.0-rc1

Signed-off-by: Michel Megens <dev@michelmegens.net>
kernel: cpp: added support for C++

Added support for C++ to the ETA/OS kernel. The C++ support is implemented
in kernel/cplusplus.cpp.

In order for C++ to work a couple of things have to be implemented:

	* the `new' and `delete' operator
	* __cxa_guard_acquire
	* __cxa_guard_release
	* __cxa_pure_virtual
	* __cxa_guard_abort

__cxa_guard_acquire
	Lock aquired when initialising global and static variables
	during boot. This lock is only useful when booting in a concurrent
	setup, which is not appliable to ETA/OS.

__cxa_guard_release
	Releases the lock aquired using __cxa_guard_acquire.

__cxa_pure_virtual
	Implementation of pure virtual methods. This function is placed
	in the vtable when a pure virtual function is found. Usually,
	this entry is overwritten later when an actual implementation is
	found for the function. If, however, this pure virtual function
	gets called in the process - it is better to execute some guard
	function then random bytes.

__cxa_guard_abort
	C++ equivalent of exit().

Signed-off-by: Michel Megens <dev@michelmegens.net>
test: cpp: added a c++ unit test

Added a unit test to test the basic functionality of the C++ support.

Signed-off-by: Michel Megens <dev@michelmegens.net>
ETA/OS 1.1.0-rc2

Signed-off-by: Michel Megens <dev@michelmegens.net>
Merge branch 'i2c'

* I2C EEPROM driver

Signed-off-by: Michel Megens <dev@michelmegens.net>

Conflicts:
	include/etaos/i2c.h
ETA/OS 1.1.0-rc3

Signed-off-by: Michel Megens <dev@michelmegens.net>
cpp: doc: added documentation to the C++ support.

Documented the functions which support the C++ language.

Signed-off-by: Michel Megens <dev@michelmegens.net>
eeprom: doc: documented the 24C02 core functions.

Added documentation to the implementation of the 24C02 EEPROM driver.

Signed-off-by: Michel Megens <dev@michelmegens.net>
eeprom: doc: documented the EEPROM core header.

Added documentation to the I2C core header.

Signed-off-by: Michel Megens <dev@michelmegens.net>
avr: added device initialisation

Added single call subsystem/module/device initialisation. See
http://git.michelmegens.net/bietje/dev-init.git/ for a proof of concept.

Signed-off-by: Michel Megens <dev@michelmegens.net>
init: added subsystem init CPP definition

subsys_init(<init_func>) can be used from now on to automatically
initialise subsystems. Subsystems are highlevel drivers or systems, such
as:
	* I2C core
	* USART core
	* scheduler

Signed-off-by: Michel Megens <dev@michelmegens.net>
sysinit: added device and module init calls

Added automated module calls to:

	* timers
	* usart
	* i2c
	* gpio
	* vfs

To ensure that the init calls are linked when they reside in libraries,
driver libraries are linked using --whole-archive. See the `ld' manpages
for more information on --whole-archive.

Signed-off-by: Michel Megens <dev@michelmegens.net>
sysinit: added dev init call to the 24c02 driver

Added automated init calls to:

	* 24C02 EEPROM driver
	* ATmega I2C bus

Signed-off-by: Michel Megens <dev@michelmegens.net>
ETA/OS 1.1.0

Signed-off-by: Michel Megens <dev@michelmegens.net>