This is the mail archive of the
ecos-discuss@sources.redhat.com
mailing list for the eCos project.
RE: Posix management [NEED HELP]
- From: Matthieu dot GIRARDIN at fr dot thalesgroup dot com
- To: nickg at ecoscentric dot com, ecos-discuss at sources dot redhat dot com
- Date: Thu, 19 Jun 2003 08:27:12 +0200
- Subject: [ECOS] RE: Posix management [NEED HELP]
Hello and excuse me,
I know that it's my third message today but I'm really blocked...
I'm going to resume my problem :
I'm running under a Linux Redhat 7.3 and my target is, for the moment,
a synthetic target.
I've worked under ecos for one month and my programs work well;
However, until yesterday, I worked with the ecos fonctions
(cyg_thread_delay, cyg_mutex_lock for example ...).
Now, I would be able to use message queues.
As ecos doesn't integer this package but only mail boxes, I decided
to use the posix functions (mq_open, mq_send ... ).
As Andrew and Nick told me in a previous answer, I started a new .ecc file
to
start from a "blank" configuration file. But my problem always exists...
I tried with the template POSIX and nothing else. I changed nothing but
it's always the same error.
The configtool added three packages :
ISO C and POSIX compatibility layer
POSIX compatibility layer
POSIX File IO compatibility layer
Do I need this three packages ?
My problem is the next :
As I try to use mq_open (for example), I must use the mq_attr
structure and the mdq_t. Logical. But :
ecos_os_messages.c: In function `otr_creer_file_de_messages':
ecos_os_messages.c:101: `mqd_t' undeclared (first use in this function)
ecos_os_messages.c:101: (Each undeclared identifier is reported only once
ecos_os_messages.c:101: for each function it appears in.)
ecos_os_messages.c:101: parse error before `handle'
ecos_os_messages.c:103: storage size of `attributs' isn't known
ecos_os_messages.c:134: `handle' undeclared (first use in this function)
ecos_os_messages.c:134: `O_RDWR' undeclared (first use in this function)
ecos_os_messages.c:134: `O_CREAT' undeclared (first use in this function)
ecos_os_messages.c:134: `O_EXCL' undeclared (first use in this function)
ecos_os_messages.c:145: `ma_file_de_messages' undeclared (first use in this
function)
ecos_os_outils.c: In function `conversion_ms_vers_ticks':
ecos_os_outils.c:77: `div_t' undeclared (first use in this function)
ecos_os_outils.c:77: (Each undeclared identifier is reported only once
ecos_os_outils.c:77: for each function it appears in.)
ecos_os_outils.c:77: parse error before `resultat_division'
ecos_os_outils.c:79: `resultat_division' undeclared (first use in this
function)
[root@p00012049 done]#
As you can see, this two types aren't defined for my system.
From here, I'm completely lost because if I read mqueue.h :
#ifdef _POSIX_MESSAGE_PASSING
# ifdef CYGBLD_ISO_MQUEUE_HEADER
# include CYGBLD_ISO_MQUEUE_HEADER
# else
...
because the "Implementation header" is disabled,
(ISO C and POSIX compatibility layer -> POSIX message queues)
ecos might take types definitions after the "# else" ... no ?
So why doesn't it do these definitions?
So, is there anyone who can help me ?
Did someone have a similar problem before ?
Please help me.
Help me to understand...
Matthieu GIRARDIN
PS : to help my safeguards, you can see just under, an extract of my
isoinfra.h
with all lines about POSIX message queues. For me all is correct in it but
...
#define CYGINT_ISO_MQUEUE 1
#define CYGINT_ISO_MQUEUE_1
#if CYGINT_ISO_MQUEUE
# define _POSIX_MESSAGE_PASSING 1
#endif
#define CYGBLD_ISO_MQUEUE_HEADER 0
#define CYGBLD_ISO_MQUEUE_HEADER_0
#define CYGNUM_ISO_MQUEUE_OPEN_MAX 8
#define CYGNUM_ISO_MQUEUE_OPEN_MAX_8
#define MQ_OPEN_MAX 8
#define MQ_OPEN_MAX_8
#define CYGNUM_ISO_MQUEUE_PRIO_MAX 65535
#define CYGNUM_ISO_MQUEUE_PRIO_MAX_65535
#define MQ_PRIO_MAX 65535
#define MQ_PRIO_MAX_65535
--
Before posting, please read the FAQ: http://sources.redhat.com/fom/ecos
and search the list archive: http://sources.redhat.com/ml/ecos-discuss