Hello Norman, Thank you for your advice. I uploaded the essential files as you said, and I will take some time to make VSOS a branch of genode. This project was a project by a team, which was made up of over 20 members. Following the leader of the team, they implemented some security functions (such as trusted boot, trusted path and trusted recovery, etc) and developed a series of applications in the project offline and privately. I joined the team for not a long time, just only several months. In March, 2014, all members of the team but me quit the project and were sent to another city for some irresistible reasons by top leader of the team, and I nearly lost touch with them. Therefore, I'm the only member of the project now, and it will take a lot of time for me to be familiar with all functions they added and clean up the project. And the performance analysis improvement of the VSOS is my master's thesis assigned by my master advisor.
The modification they made on UTCB was that they added some structs in utcb.h, which is located in genode-13.02/base-foc/contrib/l4/pkg/l4sys/include/ (13.02), or genode-14.08/contrib/foc-<checksum>/src/kernel/foc/l4/pkg/l4sys/include (14.08).
The modified utcb.h was uploaded in https://github.com/kloisiie/vsos%E2%80%8D/tree/master/doc.
The lines added to the utcb.h is listed below: typedef struct l4_msg_id_t { l4_umword_t senderID; /**< Message registers */ l4_umword_t receiverID; /**< Message registers */ } l4_msg_id_t;
L4_INLINE l4_msg_id_t *l4_utcb_id(void) L4_NOTHROW; L4_INLINE l4_msg_id_t *l4_utcb_id_u(l4_utcb_t *u) L4_NOTHROW;
/************************************************************************** * Implementations **************************************************************************/
L4_INLINE l4_msg_id_t *l4_utcb_id_u(l4_utcb_t *u) L4_NOTHROW { return (l4_msg_id_t*)((char*)u + L4_UTCB_USER_ID_OFFSET); }
L4_INLINE l4_msg_id_t *l4_utcb_id(void) L4_NOTHROW { return l4_utcb_id_u(l4_utcb());}
Shuo Wang, University of Chinese Academy of Sciences.
--------Original mail-------- Sender: norman.feske <norman.feske@...1...> (by genode-main-bounces@lists.sourceforge.net ) Time: 2014-09-01 (Mon) 12:00 (UTC+02:00) Receiver: genode-main genode-main@lists.sourceforge.net Hello Shuo Wang,
The Git branch of our genode is listed below: https://github.com/kloisiie/vsos
thanks for making your modifications publicly available. But I am wondering:
Why haven't you just forked the Genode repository? See
https://github.com/genodelabs/genode
By having imported a snapshot of the source code to a new repository, you removed all the history and cannot easily follow the mainline development. For me, this makes it almost impossible to spot your modifications. Why haven't you just applied your changes as a topic branch on top of the regular Genode repository?
Moreover, why have you removed the LICENSE file from top-level directory? The license is important information and should always be prominently visible.
I would also recommend to keep the original README file or, at least, provide a link to the original Genode repository.
- Have you tried to run your GUI application on base-linux? If yes,
have you compared its performance to the same application compiled for native Linux w/o Genode? Our apps is Fiasco.OC-specific, so I don't know how to run these apps on base-linux.
- On base-linux, you could use normal Linux profiling tools such as
oprofile to find out where the CPU time goes. Please recommend some similar tools on base-foc.
There is no such tool for base-foc. For this reason, I recommended to run the application on base-linux in the first place.
Even if you application depends on Fiasco.OC, you might still use any of the other (portable) example applications to investigate an eventual performance problem of Qt. First check if the behavior that you noticed can be reproduced with one of those example applications. If that is the case, run the same application on Linux and use oprofile to investigate.
- Can you make a Git branch with your application publicly available
https://github.com/kloisiie/vsos%E2%80%8D To run the vsos, use $ ./create_builddir fox_x86_32 build_dir=~/<build-directory> to create a build directory, and then execute $ make run/verify in build directory.
Unfortunately, I am not able to compile it. I get an error as follows:
/open/incoming/vsos/base/include/base/rpc_server.h:152:41: error: ‘l4_utcb_id’ is not a member of ‘Fiasco’
The type 'l4_utcb_id' does not exist in the 'base-foc/contrib' source tree. It seems like you changed the kernel but invoking 'make prepare' within 'base-foc' fetches the original kernel.
Best regards Norman