Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai...

86
http://shark.sssup.it - 1 Copyright © Paolo Gai 2005 - pj@evidence eu.com

Transcript of Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai...

Page 1: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 1Copyright © Paolo Gai 2005 - pj@evidence eu.com

��������

���������������� ���

����

Page 2: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 2Copyright © Paolo Gai 2005 - pj@evidence eu.com

�������������

������ ������������������������������

Page 3: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 3Copyright © Paolo Gai 2005 - [email protected]

��� � ��

� ����������

� �����������������������

� �����������������

� ����������������

Page 4: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 4Copyright © Paolo Gai 2005 - pj@evidence eu.com

�����

����������

Page 5: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 5Copyright © Paolo Gai 2005 - [email protected]

������������������

� �� ����!��������"��������������#�����������������"���������������"���������$���%�&���'

� ����""����(

� ������������)����)��������"��)�������)��������������������

� �������������)��������������������������

� ��������������������

Page 6: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 6Copyright © Paolo Gai 2005 - [email protected]

��������

� ��"���'��)�����������"����

� )��*���'����������)�������)���������������"���'

� "���������'

� ������������������+�&,���������

Page 7: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 7Copyright © Paolo Gai 2005 - [email protected]

������������� �

� �����������)�������"��������������)�����)��-&,��'�����

� ���������.������'

� "������������������"������%����������

� )�������&�+�"������

� �'������/����������"�����%�����*%�����������������%���������"������

� ������������'

� ����������������

Page 8: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 8Copyright © Paolo Gai 2005 - [email protected]

������������� � �!"#

� ���������

� 0112�0���������

� 0112�0� ����#�����*�������

� 0112�0���������*�������

� ������ �"������������%������%�������

� ���������"��)���

� 0112�02���������)�����0112�0���������

Page 9: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 9Copyright © Paolo Gai 2005 - [email protected]

������$%%&�$&���'���

� ���30 ������������� �'�����"��)��� ���)����'����

� ��������'�"��������

� ����"�����������������������

� ���34 ������� ������������'�����"��)��� ���30�5�)����'�����5���'����������&�+

� ���32 ���������������� �'�����"��)��� ���30�5�"���������""�������������'�"��������

� ���36 ����#"��"����������� �'�����"��)��� ���32�5�)����'�����5���'����������&�+

Page 10: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 10Copyright © Paolo Gai 2005 - [email protected]

���������� � ������

� �"��������718��)��+�&,����34

� ���������.������'

� )����'����

� "�����������'

� ������'����������&�+

� ������������������9�"��""���

� �"������������������������������'�����)�����������������"������

Page 11: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 11Copyright © Paolo Gai 2005 - [email protected]

������������ �' ��

� �� ����!�������� ��)����

� ������������������������ ���������

� ��������)�����������)����������

� � ������)�)������

� �������������

� �������%�������)'�����������������

� �����������������������)�)�����������'����

Page 12: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 12Copyright © Paolo Gai 2005 - [email protected]

������ �����'�� �

� -��������"���

� ������"��������'�����

� :�#;+����<����� �;= ���

� ���* � ..�

� �������������)�������.+>>���>�

� ����������)�������

� :�#;+�������;+���*������

� ��?

Page 13: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 13Copyright © Paolo Gai 2005 - pj@evidence eu.com

������

�����������������������������

Page 14: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 14Copyright © Paolo Gai 2005 - [email protected]

��������

�""������

�������

+���

������������

�������

�������

�����������������

����������������

+���

�������

�������������

:0

:2

:6

:4

:3 �2

�0

�4

�""�������������������

τ1 ���τ�

�"��������������������

Page 15: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 15Copyright © Paolo Gai 2005 - [email protected]

���(���� ���������

� ���������������������������'�

� �*��������'�����������

� ������"�����������

� �"����������'���.�)������

� ��������*������������������������������

� ����������������"�����������%���������'��������

� )����*��"��%�������� ����������������������������

� ����task_endcycle )����������������������)���������������

Page 16: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 16Copyright © Paolo Gai 2005 - [email protected]

�������������(��� �

void * body(void *arg)

{

/* initialization part */

...

for (;;) {

/* the instance */

...

task_endcycle();

}

return myvalue;

}

Page 17: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 17Copyright © Paolo Gai 2005 - [email protected]

� �������������������������������������'���������/����

����� ���������)�����

� ��������)�����������������������-�@�����

__init__ (that call main)τ0 ... τn

generickernel

librariesPCP

SRP

PIP

HLP

EDF

TBSRM

NRT

DSPS

OSLib - hardware

RMNRT PCP

Page 18: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 18Copyright © Paolo Gai 2005 - [email protected]

� � �����*���)�����

module 3

module 0module 1module 2

� �����������������������������������������������������������������"��������������)�������"����'��������

� ��� ��������������������������������������������

� ����������������1�����������"����'��������������������������0

Page 19: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 19Copyright © Paolo Gai 2005 - [email protected]

� � �����*���)����� !"#

� ��""��������)��������������(

� "���������������"����������

� ���������@���������;>

� ��)�������@��������.?�

� -��������@������������������

0: Earliest Deadline First

2: Constant Bandwidth Server

1: Round Robin

Page 20: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 20Copyright © Paolo Gai 2005 - [email protected]

�����������)������'��

TIME __kernel_register_levels__(void *arg)

{

struct multiboot_info *mb =

(struct multiboot_info *)arg;

INTDRIVE_register_level(Q,T,FLAG);

EDF_register_level(EDF_ENABLE_ALL);

RR_register_level(RRTICK, RR_MAIN_YES, mb);

CBS_register_level(CBS_ENABLE_ALL, 0);

dummy_register_level();

SEM_register_module();

CABS_register_module();

return TICK;

}

Page 21: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 21Copyright © Paolo Gai 2005 - [email protected]

���++����++����(

� ���������""��������������������main() )������%�������'���������������������)���)���������/����������

� ��'�����%�)����'����%�����"�����

� ����__init__ ������������������������"��������������������������

� ������/����������)�������

� ����������������)������

Page 22: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 22Copyright © Paolo Gai 2005 - [email protected]

���++����++����(�!"#

void *__init__(void *arg){struct multiboot_info *mb =

(struct multiboot_info *)arg;

device_drivers_init();

set_shutdown_task();sys_atrunlevel(call_shutdown_task, NULL,

RUNLEVEL_SHUTDOWN);

HARTPORT_init();call_main__(mb);return (void *)0;

}

Page 23: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 23Copyright © Paolo Gai 2005 - [email protected]

���� ���!#�'�������

� �'���*��$-�&�.�int main(int argc, char **argv)

� ����������'�����__init__ ����

� ������������������""������

� ��������main() ����%������'�����;+���-+@��������

� main() ����)�������������������������

Page 24: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 24Copyright © Paolo Gai 2005 - [email protected]

���� ���!#�'��������!"#

� ��������'������)��(

� ������������������������""������������

� ����������������������/�������__init__

� ���������*��"������������

� ����������)������(

� ��'���������������'�������)��������*����������

� ������'�����������������������������'��'����������'��'��������������=�@��)���������'%����)���)����������������

Page 25: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 25Copyright © Paolo Gai 2005 - [email protected]

�����,�� ��

� �����*��"�������(

� �����������������.?�������;>

� ���"���������)������""�������)������������������"���'���������/�����)����

� �����)����

� ���"��������'

� ��'�����

� �*��"����

� =�@�)�������

Page 26: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 26Copyright © Paolo Gai 2005 - pj@evidence eu.com

�������

�� ����!�����������)���

Page 27: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 27Copyright © Paolo Gai 2005 - [email protected]

��� ���� ���*

� ������������������������������������� TIME �����������

� struct timespec �������5���� ��+�&,�

� ����������������������������������"TIME sys_gettime(struct timespec *t)

� �����"�������������������������������������������@�.

� �����������������������)����

Page 28: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 28Copyright © Paolo Gai 2005 - [email protected]

��� ���� ���*�!"#

� �����.�������������"���������������������������"������������'����*��33���

� "�����%��������%�����������$�&.

� �������������"������������'�*���

� �������������"�����������'�����������

desired event times

time

e1 e2

e1 e2

e1 e2

periodic

one-shot

tick

when using the PIT, at leastone IRQ every 55ms

Page 29: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 29Copyright © Paolo Gai 2005 - [email protected]

��� ���� ���*�!&#

� +�������������������

� ��)��������������������"��)������

� �������������������������������������"��)��������*�����������)���

� ��������������������������������"��"����'%���������������"����"���

� �����������������'�����������������������������"���������'���������������������(���������������%�"�����������������%���"���'��*��������

Page 30: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 30Copyright © Paolo Gai 2005 - [email protected]

����� ���'����

� ����2AB�������������������

� ��������__kernel_register_levels__

� ����2AB��������"�������������

� RUNLEVEL_INIT(����������������)�������

� ����)������������������%�__init__ ��������

� ����$""�����������

� RUNLEVEL_SHUTDOWN(����������������)�������

� ���������������

� RUNLEVEL_BEFORE_EXIT(����������������)�������

� ����2AB����������������������

� RUNLEVEL_AFTER_EXIT(����������������)�������

� ��������;+����������C

Page 31: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 31Copyright © Paolo Gai 2005 - [email protected]

����� ����� ���

� ��������$""�������)�����%��� ����!��

� �����������;+��)����������������,������ ,

� ����������.�)����������� ��?

� ���)��������""�������'����������

� )�������������������������������

� �����exit()

Page 32: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 32Copyright © Paolo Gai 2005 - [email protected]

�������'�����������,������

� �'�D����������int sys_atrunlevel(void (*func_code)(void *),void *parm, BYTE when);

� ��������"���������������(� RUNLEVEL_INIT

� RUNLEVEL_SHUTDOWN

� RUNLEVEL_BEFORE_EXIT

� RUNLEVEL_AFTER_EXIT

Page 33: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 33Copyright © Paolo Gai 2005 - [email protected]

���(-���� ���� ������

� ����������������������������+�&,�������

� �� ����!���"������

�����������%�������"���������%���������"��)������%�9��%�����"�����%�����*��%������������������

�����'�����������+�&,����30

� �+�&,����"�����������������������������������������������

� "����������������DE��������"������DE

Page 34: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 34Copyright © Paolo Gai 2005 - [email protected]

���(���� �� � ��

� ���������������"������'(

� �������

� �����'� void *mybody(void *arg)

� ��������������"������������F����G����������)������������������'����

� "����%��������%����

� ������������"����)���������)������������

� ������������������������������������

Page 35: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 35Copyright © Paolo Gai 2005 - [email protected]

� � ��

HARD_TASK_MODEL mp;

hard_task_default_model(mp);

hard_task_def_ctrl_jet(mp);

hard_task_def_arg(mp, arg);

hard_task_def_wcet(mp, mywcet);

hard_task_def_mit(mp,myperiod);

hard_task_def_usemath(mp);

Page 36: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 36Copyright © Paolo Gai 2005 - [email protected]

� � ���!"#

SOFT_TASK_MODEL mp;

soft_task_default_model(mp);

soft_task_def_arg(mp, arg);

soft_task_def_group(mp, mygroup);

soft_task_def_met(mp, mymet);

soft_task_def_period(mp,myperiod);

soft_task_def_usemath(mp);

Page 37: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 37Copyright © Paolo Gai 2005 - [email protected]

���(�� � �

� �����������������������������������F����G��������

� ���� ������!�������������)�������������������������������������� ������������������"�������'����� ������!�����

@����H

:����

$�:�����$�������:�����:������

�����!�����

Page 38: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 38Copyright © Paolo Gai 2005 - [email protected]

���(���������� �����������

� ������������������������� PID task_createn(char *name,

TASK (*body)(…), TASK_MODEL *m, ...)

� PID task_create(char *name, TASK(*body)(…), TASK_MODEL *m, RES_MODEL *r)

� I����������������� int task_activate(PID pid)

� �������)����'������C� int task_kill(PID pid)

Page 39: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 39Copyright © Paolo Gai 2005 - [email protected]

���(�������'�����./0�

��� ��

Page 40: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 40Copyright © Paolo Gai 2005 - [email protected]

*����

� ����������������)����'�������"�������

� ������������������������������"������������������������������������������'� int group_activate(WORD g)

� int group_kill(WORD g)

� �������������������������������������������������'�������"� ������������"�������������

Page 41: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 41Copyright © Paolo Gai 2005 - [email protected]

����,���������� �!1.2#

� �� ����!����������������������)�����������*����������� int jet_getstat(PID p, TIME *sum,

TIME *max, int *n, TIME *curr);

� int jet_delstat(PID p);

� int jet_gettable(PID p,TIME *table, int n);

� =�@�������������������)����������������soft_task_def_ctrl_jet(mp);

Page 42: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 42Copyright © Paolo Gai 2005 - [email protected]

(���,�������

� ��""�����������@#�������& �,.

� ����������������������������������*��"���������������������

� )�'���������������)������������������%���������������J#�

� ���������������*��"�����������

� �������������K�

� <.�@��*������ �A�

� �����include/bits/errno.h�

Page 43: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 43Copyright © Paolo Gai 2005 - [email protected]

�����������������

� �"��)������������������������������G����

� ��������������))��������������(

� ��)�����������������

������������G���������������������%����������������������������������������'����� ����� �*��������"����������� �������������������������������)��������������)��������

� ��'���������������������

������������G���������������������%�������������������"����������� �����������������������""������������������������������������

Page 44: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 44Copyright © Paolo Gai 2005 - [email protected]

����������� ������� �

�������

� ����������������������������������������)������������(int task_setcancelstate(int state, int *oldstate);

int task_setcanceltype(int type, int *oldtype);

� �������������"�������������������"��������������������������*���������������)������������

int task_cleanup_push(void (*routine)(void *), void *arg);

int task_cleanup_pop(int execute);

Page 45: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 45Copyright © Paolo Gai 2005 - [email protected]

������������������

� �����������������������"���������������"��������'�������������J�)��������'����������������������������G�����"���������������������� task_testcancel%�pthread_testcancel%�sem_wait%�cond_wait%�pthread_cond_wait%nanosleep%�task_endcycle%����������������������������"����

� mutex_lock%���-+@���������������"���

Page 46: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 46Copyright © Paolo Gai 2005 - [email protected]

���(������������

� �������������%����(int task_kill(PID p); ��� pthread_cancel�

int group_kill(WORD g);

� ����)����NO_KILL ��������"��)��������������������������������������������

� �+�&,��������������'���)���������"������������������������������������@�����%�������)���������������������������������""�������

Page 47: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 47Copyright © Paolo Gai 2005 - [email protected]

� ������,�������

� ����������*���������������������������'�������"������(

� �����������������������

�����������*������������������������"���

� �������������

�����������*������������������"����"����

� ���'����������������������������������������

���������������������������������)�4�"������������������J����"������������*����.$?��

Page 48: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 48Copyright © Paolo Gai 2005 - [email protected]

��� ������ ������,�������

� ����������������������"��

� �����������������"����������

� ��������������������)����C

� kern_fsave(), kern_frestore()

� kern_cli(), kern_sti()

� ����������������"����"���

� ���'�������"�������"����"�����������������

� �������������������������"����'��������C�

� task_preempt() , task_nopreempt()

Page 49: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 49Copyright © Paolo Gai 2005 - [email protected]

�������� �����

� ������ �"������

� ������ �*������

� �'������/����

� �*����������+�&,�����"������"��������������#������������

� ����������� "����� sem_wait ����sem_xwait ��������������� "����

� �����#����������� "�������"���� �*���

� ������� ����"��������� ������ ����!���������

Page 50: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 50Copyright © Paolo Gai 2005 - [email protected]

�������� �����!"#

sem_t mutex;

int main()

{ …

sem_init(&mutex,0,1);

sem_getvalue(&mutex, &val);

}

1������������ �����+�&,�����������

0��������������"���� �����

����"������)����

������������� �)���������"���� �������

Page 51: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 51Copyright © Paolo Gai 2005 - [email protected]

�������� �����!&#

void *demotask(void *arg)

{

sem_wait(&mutex);

<critical section>

sem_post(&mutex);

}

�����'"��� �������"����������� "������(�

sem_xpost ����������'������� L0�

�������������� "������(�

sem_trywait ����#�������"������%�sem_xwait �����������'������� L0�

Page 52: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 52Copyright © Paolo Gai 2005 - [email protected]

� ��,�

� ������ �"���������������� �*������

� ���� ������� �)��))�����"����������&%��.%����%�I�

� ����������� ����������*�������� ������ ������ ����������*"�������

� �+�&,����� ���������))���������*)�� ��������*��

Page 53: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 53Copyright © Paolo Gai 2005 - [email protected]

� ��,�!"#

mutex_t mymutex;

int main() {

PI_mutexattr_t a;

PI_mutexattr_default(a);

mutex_init(&mymutex, &a);

}

��)���� �)���������*

��)���� �)���������*��������

����/���� �)���������*��������

����/���� �)���������*(�� ��������*���"����'��������� ����*

Page 54: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 54Copyright © Paolo Gai 2005 - [email protected]

� ��,�!&#

void *demotask(void *arg) {

mutex_lock(&mymutex);

<critical section>

mutex_unlock(&mymutex);

}

����*����(���������*�������� ��� ������

����*������(���������*�������� ���

)���

�))������ ������ ����"�������������*��(���������������� "��� ���� �������'�������� ����

Page 55: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 55Copyright © Paolo Gai 2005 - [email protected]

��� ����� �������

� ������ �"�������'������/���� ������*��

� ���������*��"��

� 0�����*����0�������� �������

� ������"���� �"���������� ��������*�������������������

Page 56: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 56Copyright © Paolo Gai 2005 - [email protected]

��� ����� ������� !"#

struct {

mutex_t m;

cond_t c;

int number;

} mysem;

void mysem_init(struct mysem *s)

{

PI_mutexattr_t a;

PI_mutexattr_default(a);

mutex_init(&s->m,&a);

cond_init(&s->c);

number = 0;

}

Page 57: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 57Copyright © Paolo Gai 2005 - [email protected]

��� ����� ������� !&#

void mywait(struct mysem &s) { mutex_lock(&s->m);

while (!number) cond_wait(&s->c,&s->m);

s->number--;

mutex_unlock(&s->m);

}

��������D��:��@����'��� "����� ���'��� ���������)�� ����

�������

Page 58: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 58Copyright © Paolo Gai 2005 - [email protected]

��� ����� ������� !3#

void mypost(struct mysem *s) {

mutex_lock(&s->m);

s->number++;

cond_signal(&s->c);

mutex_unlock(&s->m);

}

cond_broadcast(&s->c);

Page 59: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 59Copyright © Paolo Gai 2005 - [email protected]

����������� �� �� ��,�

� ����*��������������������"����

� ������������������������������"���

� ���������������������������������������������������%���������*��������������)�����'��

� ��������"�)�����������������������"����������������)�����������������

� )����'�������������%���������*����)��������%�����������������������������������������C

Page 60: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 60Copyright © Paolo Gai 2005 - [email protected]

����������� �� �� ��,�!"#

void cleanup_lock(void *arg)

{ mutex_unlock(&((struct mysem *)arg)->m); }

void mywait_real(struct mysem *s) {

mutex_lock(&s->m);

task_cleanup_push(cleanup_lock, (void *)&s);

while (!number) cond_wait(&s->c,&s->m);

task_cleanup_pop(0);

s->number--;

mutex_unlock(&s->m);

}

Page 61: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 61Copyright © Paolo Gai 2005 - pj@evidence eu.com

�����4

������������������

Page 62: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 62Copyright © Paolo Gai 2005 - [email protected]

���������������

� ������������'

� ������������

� )�����������������������+�&,�"���������

� �@�������

� �����'����������

� ���������.������'

� ���"�������"����"��������'�����+���

� ��"�������"����"��������'�����������

� ���� ���������������'���������>�����������

Page 63: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 63Copyright © Paolo Gai 2005 - [email protected]

����������������!"#

� ������

� ��'����������������>������))�� ��.+:�����������������)����������� �� ;;����������.&�����?���I

� ������)�����������

� �������)�������*��������������������

� "������

� :�� ������������

� >>@<

Page 64: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 64Copyright © Paolo Gai 2005 - [email protected]

���

� ������������������������������)���

� �� ����!����""����

� "�����

� ������"���)�������������������������

� ;:$

� ���'"�������������������������������������(

� ����/�����������������������

Page 65: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 65Copyright © Paolo Gai 2005 - [email protected]

���'�������

� >$@0B�)���'����# ����������������)��������������.�)����"�������� ����demos/oldexamples/fs/initfs.c

� ����demos/mesaref

� )������""����������������������������,��*�������'����������������;+����������������__kernel_register_levels__ ������������RUNLEVEL_AFTER_EXIT )�������� ����oslib/ll/i386/x-dos.h

� ����demos/dosfs

Page 66: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 66Copyright © Paolo Gai 2005 - [email protected]

���������

� ���������"������������*�����������������'

� ��""�����43�����31��������*������� #include “ll/i386/cons.h”

� void set_visual_page(int page);

� void set_active_page(int page);

� int get_visual_page(void);

� int get_active_page(void);

� void place(int x,int y);

� void cursor(int start,int end);

� void clear(void);

� void scroll(void);

Page 67: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 67Copyright © Paolo Gai 2005 - [email protected]

����������!"#

� void cputc(char c);

� void cputs(char *s);

� int cprintf(char *fmt,...);

� void putc_xy(int x,int y,char attr,char c);

� char getc_xy(int x,int y,char *attr,char *c);

� void puts_xy(int x,int y,char attr,char *s);

� int printf_xy(int x,int y,char attr, char *fmt,...);

� Colors (BLACK, BLUE, GREEN, CYAN, RED, MAGENTA, BROWN, LIGHTGRAY, DARKGRAY, LIGHTBLUE, LIGHTGREEN, LIGHTCYAN, LIGHTRED, LIGHTMAGENTA, YELLOW, WHITE)

Page 68: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 68Copyright © Paolo Gai 2005 - [email protected]

���������5�(����

� ����/�������__init__

� ����������'�����%������%�9�'����%��"�����%���������������

� ������������'����

int keyb_getch(BYTE wait)� ����������?�+.!����-+-?�+.!

� ���������������������������'�"������

� �����������'���� �����������%������keyb_getcode

Page 69: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 69Copyright © Paolo Gai 2005 - [email protected]

���������5�(���� �!"#

� ���������������� ��'����������keyb_set_map(KEYMAP_IT);

� �������������������������'����KEY_EVT k;

k.flag = CNTR_BIT;

k.scan = KEY_C;

k.ascii = 'c';

keyb_hook(k,endfun);

Page 70: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 70Copyright © Paolo Gai 2005 - [email protected]

���������5�� ���

MOUSE_PARMS mouse = BASE_MOUSE;

mouse_def_task(mouse,(TASK_MODEL *)&mouse_nrt);

mouse_init26(&mouse);

mouse_setlimits(xmin, ymin, xmax, ymax);

mouse_setposition(320,280);

mouse_setthreshold(2);

mouse_grxshape(img, mask, bpp);

mouse_grxcursor(cmd, bpp);

mouse_on();

mouse_hook(my_mouse_handler);

Page 71: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 71Copyright © Paolo Gai 2005 - [email protected]

���������5��������(�6���))

JOY26_init();

JOY_enable();

JOY_disable();

JOY_getstatus(x0, y0, x1, y1, buttons);

SPEAK26_init();

speaker_sound(hz, ticks);

speaker_mute();

Page 72: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 72Copyright © Paolo Gai 2005 - [email protected]

*��������� �����

� >�����?�))��

� �������)�"������������������������)���"������"��

� :��$��������������������""�����

� "������������"����������'�)���2;����"���

� )��������"�����������������������������'�����������%��������"����"������������������������� � ������� ��

Page 73: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 73Copyright © Paolo Gai 2005 - [email protected]

*��������� ������!"#

FB26_init();

FB26_open(device);

FB26_use_grx(device);

FB26_setmode(device,”640x480-16”);

FB26_close(device);

grx_box(x1, y1, x2, y2, GREEN);

grx_plot(x, y, color);

grx_line(x1, y1, x2, y2, color);

grx_text(”Goofy", x, y, color, fore, back);

grx_disc(x, y, radius, color);

grx_close();

Page 74: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 74Copyright © Paolo Gai 2005 - pj@evidence eu.com

����4

�������������������

Page 75: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 75Copyright © Paolo Gai 2005 - [email protected]

7�8/��69 �� ���������

� �����������9�""�/"%������,,,�/"%���/"24��*�%���������(

1) Download unzip32.exe, mindj333.zip and shark14.zip from the S.Ha.R.K. web

site.

2) unzip32 -o mindj333.zip -d c:

3) cd c:\djgpp

4) install.bat

5) setvar.bat

(this script automtically set the environement variables

for DJGPP, you must run this files every time you reboot

and start a compile session)

Now DJGPP is installed and ready to compile shark

6) unzip32 -o shark14.zip -d c:

7) cd c:\shark

8) Edit shark.cfg:

This step is needed to setup the compiler options and to optimize the kernel for faster and more precise time computation.

Page 76: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 76Copyright © Paolo Gai 2005 - [email protected]

7�8/��69 �� ����������!"#

9) make

S.Ha.R.K. is compiled

10) cd demos11) make

The demos are compiled.

If host and target machine are the same and you want to test a demo

12) cd <demo dir>13) x <demo name>

In real DOS environement, you can compile and run a demos without reboot.

Page 77: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 77Copyright © Paolo Gai 2005 - [email protected]

:���,������

� ;������������,,,�/")�������������1) Download shark-1.4.tar.bz2 from the S.Ha.R.K. web site

2) tar xvjf shark-1.4.tar.bz2

3) cd shark

4) Edit shark.cfg

This step is needed to setup the compiler options and to optimize the kernel for faster and more precise time computation.

5) make

S.Ha.R.K. is compiled

6) cd demos

7) make

The demos are compiled. You can run the demos using the FreeDOS bootdisk with x.exe or directly load a demo thought Grub.

Page 78: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 78Copyright © Paolo Gai 2005 - [email protected]

�������

� config

� ���)��������)����)��������� ����!������)���

� distrib

� �����������"���)�������������������

� include

� ����������������)���

� ���#���������������������"������������

� ��������������ll

� kernel

� ������%�������

� modules

� �����������������

Page 79: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 79Copyright © Paolo Gai 2005 - [email protected]

��������!"#

� oslib� 2AB���������������������

� ���������

� .������'���������"�������)�������������������

� drivers� �������)�������������

� libc� .������'���"�������)�������������������

Page 80: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 80Copyright © Paolo Gai 2005 - [email protected]

��������!&#

� fs

� ����)����'���������������������'�>$@�0B�

� port

� >>@<%��"��%��"��4������"�042%������%�/��%�"��%�+.��$������'��������

� lib

� ���"�����������

� demos

� ��������������������������������)���������)�����������

� advdemos, unsupported

� �����������%�����"�����)�������������������

Page 81: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 81Copyright © Paolo Gai 2005 - [email protected]

���������������

� ��������*��������������������)���'�����""�������

� ��������'"����'��������(

� ������)��

� �������/�����)��

� ����""������

� ������������������

Page 82: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 82Copyright © Paolo Gai 2005 - [email protected]

���� � ��������������!"#

� ��������)�� �demos/mix/makefile�ifndef BASE

BASE=../..

endif

include $(BASE)/config/config.mk

PROGS= mix

include $(BASE)/config/example.mk

mix:

make -f $(SUBMAKE) APP=mix OTHEROBJS="initfile.o" OTHERINCL= SHARKOPT="__OLDCHAR__ __GRX__"

your application name (must correspond to a .c file)

other OBJS that composethe application

available libraries:__6025E__ - NI 6025e__BTTV__ - FRamegrabber__CM7326__ - CM7326__CPU__ - CPU Frequency__DIDMA__ - O(1) Memory Allocator__FB__ - Frame Buffer__FFT__ - Fast Fourier Transforms__FIRST__ - FIRST Framework__GRX__ - GRX library__I2C__ - I2C__INPUT__ - Input layer__LINUXC26__ - Linux Comp 2.6__NET__ - Network __OLDCHAR__ - Keyboard__OSMESA__ - MESA 3D library__PCI__ - PCI bus__PCL833__ - PCL833__PCLAB__ - PCLAB__PNG__ - a graphic format__PPORT__ - Parallel Port__PXC__ - Framegrabber__SERVO__ - Servo motors__SNAPSHOT__ - Snapshot__TFTP__ - Trivial FTP__USB__ - USB__ZLIB__ - compression routines r

… and more!

Page 83: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 83Copyright © Paolo Gai 2005 - [email protected]

���� ���������� �*

� �����""�����������������������'���������'�����������)��������������������������

� �������������'����������

� ���������������������������������"���������%��������'�����������������������'�����������L0:�

� ���������������������������������� ��?

Page 84: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 84Copyright © Paolo Gai 2005 - [email protected]

�����*���������������

� '�������(

� ���.����:�#;+�

� ���.����<�����73�7A��;+��:����

� ����������)��""'����)��""'��������"���������������������

� ����!��������������

� ����� ��?�

� �������"���������;+�>����""����

� �����������������,������

Page 85: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 85Copyright © Paolo Gai 2005 - [email protected]

������

���"(������������"��

���"(�������������)��������

���"(���������������"������/���

���"(��)����������"�������#"��9����

Page 86: Shark Workshop 2005 day1shark.sssup.it/...workshop/slides/day1_slides.pdf · Copyright © Paolo Gai 2005 - pj@evidence.eu.com - 17 ˝˛ ˙ ˚ ˙ ˚ ˝ ’ ˛ / ) ˝ )˙ - @ __init__

http://shark.sssup.it - 86Copyright © Paolo Gai 2005 - [email protected]

����������'�

������ �

"9M��������������

�"����� ��� ��������� >�����)�� � ��!�������G�������C�

���"(��)����������"���N"9