lkml.org 
[lkml]   [2006]   [May]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    SubjectRe: [RFC PATCH 26/35] Add Xen subarch reboot support
    Date

    > +++ linus-2.6/drivers/xen/core/reboot.c
    > @@ -0,0 +1,232 @@
    > +#define __KERNEL_SYSCALLS__
    > +#include <linux/version.h>
    > +#include <linux/kernel.h>
    > +#include <linux/mm.h>
    > +#include <linux/unistd.h>
    > +#include <linux/module.h>
    > +#include <linux/reboot.h>
    > +#include <linux/sysrq.h>
    > +#include <linux/stringify.h>
    > +#include <linux/syscalls.h>
    > +#include <linux/cpu.h>
    > +#include <linux/kthread.h>

    Do you really need all these includes?

    > +#if defined(__i386__) || defined(__x86_64__)

    aka CONFIG_X86

    > +/*
    > + * Power off function, if any
    > + */
    > +void (*pm_power_off)(void);
    > +EXPORT_SYMBOL(pm_power_off);
    > +#endif
    > +
    > +extern void ctrl_alt_del(void);


    That should be in some header

    > +
    > +/* Ignore multiple shutdown requests. */
    > +static int shutting_down = SHUTDOWN_INVALID;
    > +static void __shutdown_handler(void *unused);
    > +static DECLARE_WORK(shutdown_work, __shutdown_handler, NULL);
    > +
    > +static int shutdown_process(void *__unused)
    > +{
    > + static char *envp[] = { "HOME=/", "TERM=linux",
    > + "PATH=/sbin:/usr/sbin:/bin:/usr/bin", NULL };
    > + static char *poweroff_argv[] = { "/sbin/poweroff", NULL };

    This should be configurable, probably in a sysctl

    > +
    > + if ((shutting_down == SHUTDOWN_POWEROFF) ||
    > + (shutting_down == SHUTDOWN_HALT)) {
    > + if (execve(poweroff_argv[0], poweroff_argv, envp) < 0) {
    > + sys_reboot(LINUX_REBOOT_MAGIC1,
    > + LINUX_REBOOT_MAGIC2,
    > + LINUX_REBOOT_CMD_POWER_OFF,
    > + NULL);
    > + }
    > + }
    > +
    > + shutting_down = SHUTDOWN_INVALID; /* could try again */
    > +
    > + return 0;
    > +}
    > +
    > +static void __shutdown_handler(void *unused)
    > +{
    > + int err = 0;
    > +
    > + if (shutting_down != SHUTDOWN_SUSPEND)


    The whole shutting_down handling looks racy. Probably needs some locking?

    -Andi
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2006-05-09 19:05    [W:0.022 / U:29.888 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site