aboutsummaryrefslogtreecommitdiffstats
path: root/extras
diff options
context:
space:
mode:
authorIsaku Yamahata <yamahata@valinux.co.jp>2008-07-02 11:30:37 +0900
committerIsaku Yamahata <yamahata@valinux.co.jp>2008-07-02 11:30:37 +0900
commit3819ac39eb131a278736e2d71742a0b0305c16f1 (patch)
tree28e3db6ce4c3e1fc899bca489d005b40e1cbefc4 /extras
parentfe6de66ce66c5a98048e8c98faec4a9add3c7e8f (diff)
parent1e25c34bdc5b25389cd0c792fb091b7c6026eec7 (diff)
downloadxen-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.c11
-rw-r--r--extras/mini-os/blkfront.c1
-rw-r--r--extras/mini-os/fbfront.c2
-rw-r--r--extras/mini-os/fs-front.c10
-rw-r--r--extras/mini-os/lib/sys.c2
-rw-r--r--extras/mini-os/netfront.c6
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;
}