bitkeeper revision 1.51 (3e4f67279oV-bmkkWw6EtRDc-swzow)

time.c, dom0_core.c, defconfig, dev.c, domain.c:
  Minor cleanups.
This commit is contained in:
kaf24@labyrinth.cl.cam.ac.uk committed 2003-02-16 10:25:43 +00:00
1 parent e77e33257f
commit 2ef15e3740
6 files changed
+97 -97

No files matched your search

+11 -11
View File
@@ -182,8 +182,8 @@ mktime (unsigned int year, unsigned int mon,
}
return ((((unsigned long)(year/4 - year/100 + year/400 + 367*mon/12 + day)+
year*365 - 719499
)*24 + hour /* now have hours */
)*60 + min /* now have minutes */
)*24 + hour /* now have hours */
)*60 + min /* now have minutes */
)*60 + sec; /* finally seconds */
}
@@ -214,14 +214,14 @@ static unsigned long get_cmos_time(void)
year = CMOS_READ(RTC_YEAR);
} while (sec != CMOS_READ(RTC_SECONDS));
if (!(CMOS_READ(RTC_CONTROL) & RTC_DM_BINARY) || RTC_ALWAYS_BCD)
{
{
BCD_TO_BIN(sec);
BCD_TO_BIN(min);
BCD_TO_BIN(hour);
BCD_TO_BIN(day);
BCD_TO_BIN(mon);
BCD_TO_BIN(year);
}
}
spin_unlock(&rtc_lock);
if ((year += 1900) < 1970)
year += 100;
@@ -337,16 +337,15 @@ static void update_time(unsigned long foo)
new_st = NOW();
rdtscl(new_pcc);
/* update system time */
/* Update system time. */
spin_lock_irqsave(&stime_lock, flags);
stime_now = new_st;
stime_pcc=new_pcc;
/* Don't reeenable IRQs until we release wctime_lock. */
spin_unlock(&stime_lock);
spin_unlock_irqrestore(&stime_lock, flags);
/* update wall clock time */
spin_lock_irqsave(&wctime_lock, flags);
/* Update wall clock time. */
spin_lock(&wctime_lock);
usec = ((unsigned long)(new_st - wctime_st))/1000;
usec += wall_clock_time.tv_usec;
while (usec >= 1000000) {
@@ -360,7 +359,8 @@ static void update_time(unsigned long foo)
TRC(printk("TIME[%02d] update time: stime_now=%lld now=%lld,wct=%ld:%ld\n",
smp_processor_id(), stime_now, new_st, wall_clock_time.tv_sec,
wall_clock_time.tv_usec));
/* reload timer */
/* Reload the timer. */
again:
update_timer.expires = new_st + MILLISECS(200);
if(add_ac_timer(&update_timer) == 1) {
+80 -76
View File
@@ -137,39 +137,6 @@ long kill_other_domain(unsigned int dom)
}
/* Release resources belonging to task @p. */
void release_task(struct task_struct *p)
{
struct list_head *list_ent, *tmp;
ASSERT(p->state == TASK_DYING);
ASSERT(!p->has_cpu);
write_lock_irq(&tasklist_lock);
REMOVE_LINKS(p);
write_unlock_irq(&tasklist_lock);
/*
* Safe! Only queue skbuffs with tasklist_lock held.
* Only access shared_info with tasklist_lock held.
* And free_task_struct() only releases if refcnt == 0.
*/
while ( p->num_net_vifs )
{
destroy_net_vif(p);
}
if ( p->mm.perdomain_pt ) free_page((unsigned long)p->mm.perdomain_pt);
free_page((unsigned long)p->shared_info);
list_for_each_safe(list_ent, tmp, &p->pg_head)
{
struct pfn_info *pf = list_entry(list_ent, struct pfn_info, list);
pf->type_count = pf->tot_count = pf->flags = 0;
list_del(list_ent);
list_add(list_ent, &free_list);
}
free_task_struct(p);
}
unsigned int alloc_new_dom_mem(struct task_struct *p, unsigned int kbytes)
{
struct list_head *temp;
@@ -206,6 +173,83 @@ unsigned int alloc_new_dom_mem(struct task_struct *p, unsigned int kbytes)
return 0;
}
void free_all_dom_mem(struct task_struct *p)
{
struct list_head *list_ent, *tmp;
list_for_each_safe(list_ent, tmp, &p->pg_head)
{
struct pfn_info *pf = list_entry(list_ent, struct pfn_info, list);
pf->type_count = pf->tot_count = pf->flags = 0;
list_del(list_ent);
list_add(list_ent, &free_list);
}
p->tot_pages = 0;
}
/* Release resources belonging to task @p. */
void release_task(struct task_struct *p)
{
ASSERT(p->state == TASK_DYING);
ASSERT(!p->has_cpu);
write_lock_irq(&tasklist_lock);
REMOVE_LINKS(p);
write_unlock_irq(&tasklist_lock);
/*
* Safe! Only queue skbuffs with tasklist_lock held.
* Only access shared_info with tasklist_lock held.
* And free_task_struct() only releases if refcnt == 0.
*/
while ( p->num_net_vifs )
{
destroy_net_vif(p);
}
if ( p->mm.perdomain_pt ) free_page((unsigned long)p->mm.perdomain_pt);
free_page((unsigned long)p->shared_info);
free_all_dom_mem(p);
free_task_struct(p);
}
void construct_cmdline(char *dst, struct task_struct *p)
{
int dom = p->domain;
unsigned char boot[150];
unsigned char ipbase[20], nfsserv[20], gateway[20], netmask[20];
unsigned char nfsroot[70];
if ( strcmp("",opt_nfsroot) )
{
/* NFS root for Xenolinux. */
snprintf(nfsroot, 70, opt_nfsroot, dom);
snprintf(boot, 200,
" root=/dev/nfs ip=%s:%s:%s:%s::eth0:off nfsroot=%s",
quad_to_str(opt_ipbase + dom, ipbase),
quad_to_str(opt_nfsserv, nfsserv),
quad_to_str(opt_gateway, gateway),
quad_to_str(opt_netmask, netmask),
nfsroot);
}
else
{
/* Non-NFS root for Xenolinux. */
snprintf(boot, 200,
" ip=%s::%s:%s::eth0:off",
quad_to_str(opt_ipbase + dom, ipbase),
quad_to_str(opt_gateway, gateway),
quad_to_str(opt_netmask, netmask));
}
strcpy(dst, boot);
}
/* final_setup_guestos is used for final setup and launching of domains other
* than domain 0. ie. the domains that are being built by the userspace dom0
* domain builder.
@@ -311,21 +355,7 @@ int final_setup_guestos(struct task_struct * p, dom_meminfo_t * meminfo)
}
*dst = '\0';
if ( opt_nfsroot )
{
unsigned char boot[150];
unsigned char ipbase[20], nfsserv[20], gateway[20], netmask[20];
unsigned char nfsroot[70];
snprintf(nfsroot, 70, opt_nfsroot, p->domain);
snprintf(boot, 200,
" root=/dev/nfs ip=%s:%s:%s:%s::eth0:off nfsroot=%s",
quad_to_str(opt_ipbase + p->domain, ipbase),
quad_to_str(opt_nfsserv, nfsserv),
quad_to_str(opt_gateway, gateway),
quad_to_str(opt_netmask, netmask),
nfsroot);
strcpy(dst, boot);
}
construct_cmdline(dst, p);
/* Reinstate the caller's page tables. */
__asm__ __volatile__ (
@@ -404,7 +434,7 @@ int setup_guestos(struct task_struct *p, dom0_newdomain_t *params)
dom, (mod[nr_mods-1].mod_end-mod[0].mod_start)>>20,
(params->memory_kb)>>11,
(params->memory_kb)>>10);
/* XXX should free domain memory here XXX */
free_all_dom_mem(p);
return -1;
}
@@ -578,34 +608,8 @@ int setup_guestos(struct task_struct *p, dom0_newdomain_t *params)
}
}
*dst = '\0';
//printk("opt_nfsroot=%d,%s XX cmd =: %s\n",opt_nfsroot,opt_nfsroot,virt_startinfo_address->cmd_line);
if ( strcmp("",opt_nfsroot) )
{ // if nfsroot has been set to something
unsigned char boot[150];
unsigned char ipbase[20], nfsserv[20], gateway[20], netmask[20];
unsigned char nfsroot[70];
snprintf(nfsroot, 70, opt_nfsroot, dom);
snprintf(boot, 200,
" root=/dev/nfs ip=%s:%s:%s:%s::eth0:off nfsroot=%s",
quad_to_str(opt_ipbase + dom, ipbase),
quad_to_str(opt_nfsserv, nfsserv),
quad_to_str(opt_gateway, gateway),
quad_to_str(opt_netmask, netmask),
nfsroot);
strcpy(dst, boot);
}
else
{
unsigned char boot[150];
unsigned char ipbase[20], nfsserv[20], gateway[20], netmask[20];
snprintf(boot, 200,
" ip=%s::%s:%s::eth0:off",
quad_to_str(opt_ipbase + dom, ipbase),
quad_to_str(opt_gateway, gateway),
quad_to_str(opt_netmask, netmask));
strcpy(dst, boot);
}
construct_cmdline(dst, p);
/* Reinstate the caller's page tables. */
+1 -1
View File
@@ -40,7 +40,7 @@
#define rtnl_unlock() ((void)0)
#define dst_init() ((void)0)
#if 1
#if 0
#define DPRINTK(_f, _a...) printk(_f , ## _a)
#else
#define DPRINTK(_f, _a...) ((void)0)
+1 -1
View File
@@ -113,7 +113,7 @@ CONFIG_BLK_DEV_LOOP=y
CONFIG_BLK_DEV_NBD=y
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_SIZE=4096
CONFIG_BLK_DEV_INITRD=y
# CONFIG_BLK_DEV_INITRD is not set
CONFIG_XENOLINUX_BLOCK=y
#
@@ -212,11 +212,8 @@ static int cmd_write_proc(struct file *file, const char *buffer,
}
else if ( op.cmd == DO_PGUPDATES )
{
p = op.u.pgupdate.pgt_update_arr;
for ( i = 0; i < op.u.pgupdate.num_pgt_updates; i++ )
{
ret = HYPERVISOR_pt_update(p + i*8, 1);
}
ret = HYPERVISOR_pt_update(op.u.pgupdate.pgt_update_arr,
op.u.pgupdate.num_pgt_updates);
}
else
{
@@ -241,11 +241,11 @@ static inline void do_timer_interrupt(int irq, void *dev_id,
{
struct timeval tv;
long long time, delta;
#ifdef XENO_TIME_DEBUG
static u32 foo_count = 0;
foo_count++;
if (foo_count>= 10000) {
if (foo_count>= 1000) {
s64 n = NOW();
struct timeval tv;
do_gettimeofday(&tv);
@@ -254,7 +254,6 @@ static inline void do_timer_interrupt(int irq, void *dev_id,
foo_count = 0;
}
#endif
/*
* The next bit really sucks:
* Linux not only uses do_gettimeofday() to keep a notion of
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.