Linux 2.6.24 L4FB and VGA_CONSOLE
Marc CHALAND
l4 at marc-chaland.net
Fri Feb 22 12:05:44 CET 2008
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
More information about the l4-hackers
mailing list