Sorry Adam, I think I have trouble with my ISP. I didn't get your mail.
From Adam Lackorzynski
I think it has nothing to do with CONFIG_EMBEDDED.
Thank you for this info. So you confirm, to build l4linux with L4con, EMBEDDED should be set on version 2.6.24 ?
With 'sometimes', do you mean it's hard to trigger or rather that it doesn't matter which program you use?
It's easy to trigger (during init). But never at the same moment.
Just for completeness, did you upgrade your Linux distribution you're running inside L4Linux? Or any other change?
I don't remember exactly why, but I had to upgrade generic_dm or dm_phys so that I had to upgrade all TUDOS pkg directory and l4linux. I have another strange behavior with dice : one of my IDL doesn't work with last version of DICE. I had to go back to 238 revision of dice to work. Code generated is very strange :
-----------> IDL : int socket([in] int domain, [in] int type, [in] int protocol, [out] l4_threadid_t *socket_worker, [out] int *serrno);
-------------> last revision of dice on client side : int lwip_sockmanager_socket_call (const_CORBA_Object _dice_corba_obj, int domain /* in */, int type /* in */, int protocol /* in */, l4_threadid_t *socket_worker /* out */, int *serrno /* out */, CORBA_Environment *_dice_corba_env) { /* size = 20 bytes == 5 dwords */ typedef union { struct { long _dice_opcode; int domain; int type; int protocol; } sockmanager_socket_in; struct { l4_umword_t _exception; l4_threadid_t socket_worker; int serrno; int _dice_return; } sockmanager_socket_out; struct { l4_fpage_t _dice_rcv_fpage; l4_msgdope_t _dice_size_dope; l4_msgdope_t _dice_send_dope; l4_umword_t _word[2]; } _word; } lwip_sockmanager_sockmanager_socket_msg_buffer_t; int _dice_return = 0; lwip_sockmanager_sockmanager_socket_msg_buffer_t *_dice_msg_buffer = (lwip_sockmanager_sockmanager_socket_msg_buffer_t*)_dice_corba_env->utcb->values; l4_umword_t _exception __attribute__ ((unused)); l4_msgtag_t tag_dummy __attribute__ ((unused)) = l4_msgtag(0,0,0,0); l4_msgdope_t _dice_result = { raw: 0 }; _dice_msg_buffer->_word._dice_size_dope = L4_IPC_DOPE( sizeof(*_dice_msg_buffer)/sizeof(long)-3, 0); _dice_msg_buffer->sockmanager_socket_in._dice_opcode = LWIP_SOCKMANAGER_SOCKET_OPCODE; _dice_msg_buffer->sockmanager_socket_in.domain = domain; _dice_msg_buffer->sockmanager_socket_in.type = type; _dice_msg_buffer->sockmanager_socket_in.protocol = protocol; do { l4_ipc_call_tag(*_dice_corba_obj, L4_IPC_SHORT_MSG, LWIP_SOCKMANAGER_SOCKET_OPCODE, domain, l4_msgtag(0, 4, 0, 0), /* utcb */ L4_IPC_SHORT_MSG, &_dice_msg_buffer->sockmanager_socket_out._exception, (l4_umword_t*)socket_worker, _dice_corba_env->timeout, &_dice_result, &tag_dummy); } while ((L4_IPC_ERROR(_dice_result) == L4_IPC_SEABORTED) || (L4_IPC_ERROR(_dice_result) == L4_IPC_SECANCELED)); if (DICE_EXPECT_FALSE(L4_IPC_ERROR(_dice_result))) { CORBA_exception_set(_dice_corba_env, CORBA_SYSTEM_EXCEPTION, CORBA_DICE_EXCEPTION_IPC_ERROR, 0); DICE_IPC_ERROR(_dice_corba_env) = L4_IPC_ERROR(_dice_result); return _dice_return; } if (DICE_EXPECT_FALSE(_dice_msg_buffer->sockmanager_socket_out._exception != 0)) { DICE_EXCEPTION_MAJOR(_dice_corba_env) = ((dice_CORBA_exception_type){ _raw: _dice_msg_buffer->sockmanager_socket_out._exception})._corba.major; DICE_EXCEPTION_MINOR(_dice_corba_env) = ((dice_CORBA_exception_type){ _raw: _dice_msg_buffer->sockmanager_socket_out._exception})._corba.repos_id; return _dice_return; } (*socket_worker) = _dice_msg_buffer->sockmanager_socket_out.socket_worker; (*serrno) = _dice_msg_buffer->sockmanager_socket_out.serrno; _dice_return = _dice_msg_buffer->sockmanager_socket_out._dice_return; return _dice_return; }
l4_ipc_call_tag call seems very strange.
Regards Marc