diff options
author | Isaku Yamahata <yamahata@valinux.co.jp> | 2008-07-02 11:30:37 +0900 |
---|---|---|
committer | Isaku Yamahata <yamahata@valinux.co.jp> | 2008-07-02 11:30:37 +0900 |
commit | 3819ac39eb131a278736e2d71742a0b0305c16f1 (patch) | |
tree | 28e3db6ce4c3e1fc899bca489d005b40e1cbefc4 /extras | |
parent | fe6de66ce66c5a98048e8c98faec4a9add3c7e8f (diff) | |
parent | 1e25c34bdc5b25389cd0c792fb091b7c6026eec7 (diff) | |
download | xen-3819ac39eb131a278736e2d71742a0b0305c16f1.tar.gz xen-3819ac39eb131a278736e2d71742a0b0305c16f1.tar.bz2 xen-3819ac39eb131a278736e2d71742a0b0305c16f1.zip |
merge with xen-unstable.hg
Diffstat (limited to 'extras')
-rw-r--r-- | extras/mini-os/arch/x86/mm.c | 11 | ||||
-rw-r--r-- | extras/mini-os/blkfront.c | 1 | ||||
-rw-r--r-- | extras/mini-os/fbfront.c | 2 | ||||
-rw-r--r-- | extras/mini-os/fs-front.c | 10 | ||||
-rw-r--r-- | extras/mini-os/lib/sys.c | 2 | ||||
-rw-r--r-- | extras/mini-os/netfront.c | 6 |
6 files changed, 12 insertions, 20 deletions
diff --git a/extras/mini-os/arch/x86/mm.c b/extras/mini-os/arch/x86/mm.c index ea8158045b..85b542437f 100644 --- a/extras/mini-os/arch/x86/mm.c +++ b/extras/mini-os/arch/x86/mm.c @@ -528,18 +528,13 @@ void *map_frames_ex(unsigned long *f, unsigned long n, unsigned long stride, static void clear_bootstrap(void) { - xen_pfn_t mfns[] = { virt_to_mfn(&shared_info) }; - int n = sizeof(mfns)/sizeof(*mfns); pte_t nullpte = { }; /* Use first page as the CoW zero page */ memset(&_text, 0, PAGE_SIZE); - mfn_zero = pfn_to_mfn((unsigned long) &_text); - if (HYPERVISOR_update_va_mapping((unsigned long) &_text, nullpte, UVMF_INVLPG)) - printk("Unable to unmap first page\n"); - - if (free_physical_pages(mfns, n) != n) - printk("Unable to free bootstrap pages\n"); + mfn_zero = virt_to_mfn((unsigned long) &_text); + if (HYPERVISOR_update_va_mapping(0, nullpte, UVMF_INVLPG)) + printk("Unable to unmap NULL page\n"); } void arch_init_p2m(unsigned long max_pfn) diff --git a/extras/mini-os/blkfront.c b/extras/mini-os/blkfront.c index 48704bd1c4..7deb69fe9e 100644 --- a/extras/mini-os/blkfront.c +++ b/extras/mini-os/blkfront.c @@ -125,7 +125,6 @@ struct blkfront_dev *init_blkfront(char *nodename, struct blkfront_info *info) dev->events = NULL; - // FIXME: proper frees on failures again: err = xenbus_transaction_start(&xbt); if (err) { diff --git a/extras/mini-os/fbfront.c b/extras/mini-os/fbfront.c index 245ef468ed..593d346098 100644 --- a/extras/mini-os/fbfront.c +++ b/extras/mini-os/fbfront.c @@ -100,7 +100,6 @@ struct kbdfront_dev *init_kbdfront(char *nodename, int abs_pointer) s->in_cons = s->in_prod = 0; s->out_cons = s->out_prod = 0; - // FIXME: proper frees on failures again: err = xenbus_transaction_start(&xbt); if (err) { @@ -408,7 +407,6 @@ struct fbfront_dev *init_fbfront(char *nodename, unsigned long *mfns, int width, s->pd[i] = 0; - // FIXME: proper frees on failures again: err = xenbus_transaction_start(&xbt); if (err) { diff --git a/extras/mini-os/fs-front.c b/extras/mini-os/fs-front.c index 0b27df361b..3320b879f0 100644 --- a/extras/mini-os/fs-front.c +++ b/extras/mini-os/fs-front.c @@ -136,8 +136,8 @@ static inline void add_id_to_freelist(unsigned int id,unsigned short* freelist) again: old_id = freelist[0]; /* Note: temporal inconsistency, since freelist[0] can be changed by someone - * else, but we are a sole owner of freelist[id], it's OK. */ - freelist[id] = old_id; + * else, but we are a sole owner of freelist[id + 1], it's OK. */ + freelist[id + 1] = old_id; new_id = id; if(cmpxchg(&freelist[0], old_id, new_id) != old_id) { @@ -154,7 +154,7 @@ static inline unsigned short get_id_from_freelist(unsigned short* freelist) again: old_id = freelist[0]; - new_id = freelist[old_id]; + new_id = freelist[old_id + 1]; if(cmpxchg(&freelist[0], old_id, new_id) != old_id) { printk("Cmpxchg on freelist remove failed.\n"); @@ -785,8 +785,8 @@ static void alloc_request_table(struct fs_import *import) printk("Allocating request array for import %d, nr_entries = %d.\n", import->import_id, import->nr_entries); requests = xmalloc_array(struct fs_request, import->nr_entries); - import->freelist = xmalloc_array(unsigned short, import->nr_entries); - memset(import->freelist, 0, sizeof(unsigned short) * import->nr_entries); + import->freelist = xmalloc_array(unsigned short, import->nr_entries + 1); + memset(import->freelist, 0, sizeof(unsigned short) * (import->nr_entries + 1)); for(i=0; i<import->nr_entries; i++) { /* TODO: that's a lot of memory */ diff --git a/extras/mini-os/lib/sys.c b/extras/mini-os/lib/sys.c index 06f2822cfe..5b763afa6d 100644 --- a/extras/mini-os/lib/sys.c +++ b/extras/mini-os/lib/sys.c @@ -686,7 +686,7 @@ static int select_poll(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exce #ifdef LIBC_VERBOSE static int nb; static int nbread[NOFILE], nbwrite[NOFILE], nbexcept[NOFILE]; - static s64_t lastshown; + static s_time_t lastshown; nb++; #endif diff --git a/extras/mini-os/netfront.c b/extras/mini-os/netfront.c index d01ce6927b..3fff0accdd 100644 --- a/extras/mini-os/netfront.c +++ b/extras/mini-os/netfront.c @@ -38,7 +38,7 @@ struct net_buffer { struct netfront_dev { domid_t dom; - unsigned short tx_freelist[NET_TX_RING_SIZE]; + unsigned short tx_freelist[NET_TX_RING_SIZE + 1]; struct semaphore tx_sem; struct net_buffer rx_buffers[NET_RX_RING_SIZE]; @@ -70,14 +70,14 @@ void init_rx_buffers(struct netfront_dev *dev); static inline void add_id_to_freelist(unsigned int id,unsigned short* freelist) { - freelist[id] = freelist[0]; + freelist[id + 1] = freelist[0]; freelist[0] = id; } static inline unsigned short get_id_from_freelist(unsigned short* freelist) { unsigned int id = freelist[0]; - freelist[0] = freelist[id]; + freelist[0] = freelist[id + 1]; return id; } |