Removed allocation of utcb shared pages by mm0 completely.

- Now libl4 has no references to utcb page or shmat etc.
- Pager does not deal with special case utcb page allocation.
  It instead allocates a shared page from shm memory pool.
- All tasks working to original standard.

Next:
- Add per-thread utcb allocation from the kernel
- Add larger register file for standard ipc
- Add long ipc (up to 1Kb)
This commit is contained in:
Bahadir Balban
2009-04-22 14:48:43 +03:00
parent 203f053878
commit 54a9b2901d
18 changed files with 207 additions and 124 deletions

View File

@@ -30,7 +30,6 @@ struct utcb {
} __attribute__((__packed__));
extern struct utcb utcb;
extern void *utcb_page;
static inline struct utcb *l4_get_utcb()
{
@@ -48,30 +47,6 @@ static inline void write_mr(unsigned int offset, unsigned int val)
l4_get_utcb()->mr[offset] = val;
}
/*
* Arguments that are too large to fit in message registers are
* copied onto another area that is still on the utcb, and the servers
* map-in the task utcb and read those arguments from there.
*/
static inline int copy_to_utcb(void *arg, int offset, int size)
{
if (offset + size > PAGE_SIZE)
return -1;
memcpy(utcb_page + offset, arg, size);
return 0;
}
static inline int copy_from_utcb(void *buf, int offset, int size)
{
if (offset + size > PAGE_SIZE)
return -1;
memcpy(buf, utcb_page + offset, size);
return 0;
}
#endif /* !__ASSEMBLY__ */
#endif /* __ARM_UTCB_H__ */