zephyr/samples/microkernel/benchmark/footprint
Yonattan Louise dbada63eee Fix coding style issues.
Some checkpatch issues were solved by scripts leaving other problems
such as alignment and indentation issues.  In order to comply with the
defined coding style the following fixes were made:

- Fixed the function declaration moving the parameters' comments above
  the function in accordance to the doxygen format.
- Fixed functions' opening and closing brackets. These brackets should
  not be indented.
- Fixed the 'if', 'for' and 'while' statements adding the brackets
  around the sentence.
- Fixed comments' alignment.
- Fixed indentation.

The work was done manually and submitted as one commit. I didn't
separate these changes in different commits because they were fixed all
at once. Basically, all errors were fixed in every file at once.

Change-Id: Icc94a10bfd2cff82007ce60df23b2ccd4c30268d
Signed-off-by: Yonattan Louise <yonattan.a.louise.mendoza@intel.com>
2016-02-05 20:13:59 -05:00
..
src Fix coding style issues. 2016-02-05 20:13:59 -05:00
Makefile Remove references to unsupported stdlib functionality 2016-02-05 20:13:40 -05:00
micro_max.vpf First commit 2015-04-10 16:44:37 -07:00
micro_min.vpf First commit 2015-04-10 16:44:37 -07:00
micro_reg.vpf First commit 2015-04-10 16:44:37 -07:00
prj_max_arm.conf Configure task priority queues in microkernel footprint benchmark 2016-02-05 20:13:48 -05:00
prj_max_x86.conf Configure task priority queues in microkernel footprint benchmark 2016-02-05 20:13:48 -05:00
prj_min_arm.conf Configure task priority queues in microkernel footprint benchmark 2016-02-05 20:13:48 -05:00
prj_min_x86.conf Update minimum microkernel footprint benchmark 2016-02-05 20:13:49 -05:00
prj_reg_arm.conf Configure task priority queues in microkernel footprint benchmark 2016-02-05 20:13:48 -05:00
prj_reg_x86.conf Configure task priority queues in microkernel footprint benchmark 2016-02-05 20:13:48 -05:00
README.txt Update minimum microkernel footprint benchmark 2016-02-05 20:13:49 -05:00

Title: Microkernel footprint project

Description:

This project is designed to characterize the memory requirements of a
standard microkernel image running on a Pentium4 target.


The project can be built using several configurations:

minimal (a "do nothing" image that has support for few kernel capabilities)
-------
- Idle task is only task in system.
- K_swapper is only fiber in system.
- No system timer support.
- ISR for the spurious interrupt handling is present.
- IDT and stack memory sizes are very limited.
- Provides support for 2 task priorities.

regular (a "typical" image that has support for some kernel capabilities)
-------
- As for "minimal" configuration, except as noted below.
- Supports larger IDT and utilizes larger stacks.
- A statically linked dummy ISR is present.
- Has "foreground" task that prints a message to the console via printk().
- Provides support for 16 task priorities.
- Supports system timer, along with task scheduler support for time slicing.
- Links in support for EVENT, MUTEX, FIFO, and MAP objects.

maximal (a "complex" image that has support for many kernel capabilities)
-------
- As for "regular" configuration, except as noted below.
- Supports full IDT and utilizes even larger stacks.
- Provides support for 64 task priorities.
- Foreground task dynamically links in the dummy ISR, rather than having
  it statically linked.
- Foreground task prints a message to the console via printf(),
  rather than printk().
- Links in support for SEMAPHORE, PIPE, MAILBOX, and POOL objects.
- Links in support for task device interrupt handling and additional task APIs.
- Adds advanced power management support (including tickless idle).
- Adds floating point support (for x87 FPU, including SSE).


NOTE:
- These configurations utilize standard security only.

--------------------------------------------------------------------------------

Building and Running Project:

This microkernel project does not generate any output in the default case
(TEST=min). In the regular case (TEST=reg) and the maximal case (TEST=max),
it outputs to the console. It can be built and executed on QEMU as follows:

    make pristine
    make TEST=min microkernel.qemu          (minimal configuration)

    make pristine
    make TEST=reg microkernel.qemu          (regular configuration)

    make pristine
    make TEST=max microkernel.qemu          (maximal configuration)

--------------------------------------------------------------------------------

Sample Output:

The resulting image is bootable for all configurations, but produces different
output in each case.

minimal
-------
This configuration does NOT produce any output. To observe its operation,
invoke it using gdb and observe that:
- the kernel's timer ISR & K_swapper increment "K_LowTime" on a regular basis
- nano_cpu_idle() is invoked by the idle task each time K_LowTime is incremented

regular
-------
This configuration prints the following message to the console:

  Running regular microkernel configuration

maximal
-------
This configuration prints the following message to the console:

  Running maximal microkernel configuration

--------------------------------------------------------------------------------

Additional notes:

Various host utilities (such as the Unix "size" utility) can be used to
determine the footprint of the resulting outdir/microkernel.elf image.