POK(kernelpart)
Main Page
Data Structures
Files
File List
Globals
POK(kernelpart)
Data Structures
Files
File List
kernel
arch
core
include
libc
middleware
portcreate.c
portflushall.c
portinit.c
portqueueingcreate.c
portqueueingid.c
portqueueingreceive.c
portqueueingsend.c
portqueueingstatus.c
portsamplingcreate.c
portsamplingid.c
portsamplingread.c
portsamplingstatus.c
portsamplingwrite.c
portutils.c
portvirtualdestination.c
portvirtualgetglobal.c
portvirtualid.c
portvirtualnbdestinations.c
queueinit.c
ressources.c
Globals
portqueueingcreate.c
Go to the documentation of this file.
1
/*
2
* POK header
3
*
4
* The following file is a part of the POK project. Any modification should
5
* made according to the POK licence. You CANNOT use this file or a part of
6
* this file is this part of a file for your own project
7
*
8
* For more information on the POK licence, please see our LICENCE FILE
9
*
10
* Please follow the coding guidelines described in doc/CODING_GUIDELINES
11
*
12
* Copyright (c) 2007-2009 POK team
13
*
14
* Created by julien on Thu Jan 15 23:34:13 2009
15
*/
16
17
#ifdef POK_NEEDS_PORTS_QUEUEING
18
19
#include <
errno.h
>
20
#include <types.h>
21
#include <
core/lockobj.h
>
22
#include <
middleware/port.h
>
23
#include <
middleware/queue.h
>
24
25
extern
pok_port_t
pok_ports[POK_CONFIG_NB_PORTS];
26
27
pok_ret_t
pok_port_queueing_create (
char
* name,
28
const
pok_port_size_t
size,
29
const
pok_port_direction_t
direction,
30
const
pok_port_queueing_discipline_t
discipline,
31
pok_port_id_t
*
id
)
32
{
33
pok_ret_t
ret;
34
pok_lockobj_attr_t
lockattr;
35
if
(discipline !=
POK_PORT_QUEUEING_DISCIPLINE_FIFO
)
36
{
37
return
POK_ERRNO_DISCIPLINE
;
38
}
39
40
ret = pok_port_create (name, size, direction,
POK_PORT_KIND_QUEUEING
,
id
);
41
42
/*
43
* FIXME: should be done using another way by reinitializing
44
* ports when a partition is restarted. At this time, when
45
* a partition is restarted, the ports are not reinitialized
46
* so that when the partition restart, it tries to reopen
47
* ports already created. We pass over actually and keep
48
* the port in the previous step, but we should reinitialize
49
* the port while reinitializing the partition AND also
50
* does not report an OK return code (see below) when trying to re
51
* create a port that was already created.
52
*/
53
if
(ret ==
POK_ERRNO_EXISTS
)
54
{
55
return
POK_ERRNO_OK
;
56
}
57
58
if
(ret !=
POK_ERRNO_OK
)
59
{
60
return
ret;
61
}
62
63
pok_ports[*id].
discipline
= discipline;
64
65
lockattr.
kind
=
POK_LOCKOBJ_KIND_EVENT
;
66
lockattr.
locking_policy
=
POK_LOCKOBJ_POLICY_STANDARD
;
67
ret =
pok_lockobj_create
(&pok_ports[*
id
].lock, &lockattr);
68
69
return
(ret);
70
}
71
72
#endif
kernel
middleware
portqueueingcreate.c
Generated on Fri Jun 1 2012 19:07:12 for POK(kernelpart) by
1.8.1