.. _apps_object_conf:

Microkernel Object Configuration
################################

Microkernel objects are explained fully in the :ref:`kernel`.
See :ref:`microkernel` for example MDEF entries.

Procedure
*********

.. _create_mdef:

Creating and Configuring an MDEF for a Microkernel Application
==============================================================

Create the MDEF to define microkernel objects used in your
application when they apply to the application as a whole.
You do not need to define every object before writing code. In
some cases, the necessary objects aren't obvious until you begin
writing code. However, all objects used in your code must be defined
before your application will compile successfully.

.. note::

  Nanokernel applications do not use an MDEF because microkernel
  objects cannot be used in applications of this type.

Before you begin
----------------

* Confirm your :file:`~/appDir` already exists.

* Confirm Zephyr environment variables are set for each console
  terminal; for instructions, see :ref:`apps_common_procedures`.

Steps
-----

1. Create an MDEF in your application directory
   (:file:`~/appDir ~) using
   the name you specified in your application Makefile.
   (See :ref:`Creating an Application Makefile`).

 .. code-block:: bash

  $ touch prj.mdef

 The default MDEF name is :file:`prj.mdef`.

2. Open the file using a standard text editor.

3. Add settings to the file to suit your application.

   The syntax for objects that can be defined in :file:`.mdef`
   is:

   TASK name priority entry_point stack_size groups

   TASKGROUP name

   MUTEX name

   SEMA name

   FIFO name depth width

   PIPE name buffer_size

   MAILBOX name

   MAP name num_blocks block_size

   POOL name min_block_size max_block_size numMax

.. note::

   Some microkernel objects, such as Task IRQs, are not
   defined in an :file:`.mdef` file.

The following example shows the content of the
:file:`samples/philosophers/microkernel/proj.mdef`
for the Philosophers' sample application. The sample
uses seven tasks and six mutexes.

Example MDEF
------------

.. literalinclude:: ../../samples/philosophers/microkernel/prj.mdef
   :linenos:

Related Topics
--------------

:ref:`src_makefiles_reqs`
:ref:`src_files_directories`
