hjman 发表于 2015-3-20 18:36:23

从linux kernel 调用应用层AP

static void argv_cleanup(struct subprocess_info *info)
{
      argv_free(info->argv);
}

char reboot_cmd = "/system/bin/reboot";
intcall_reboot_proc()
{
      int argc;
      char **argv = argv_split(GFP_ATOMIC, reboot_cmd, &argc);
      static char *envp[] = {
                "HOME=/",
                "PATH=/sbin:/bin:/usr/sbin:/usr/bin:/system/bin",
                NULL
      };
      int ret = -ENOMEM;
      struct subprocess_info *info;

      if (argv == NULL) {
                printk(KERN_WARNING "%s failed to allocate memory for \"%s\"\n",
                     __func__, poweroff_cmd);
                goto out;
      }

      info = call_usermodehelper_setup(argv, argv, envp, GFP_ATOMIC);
      if (info == NULL) {
                argv_free(argv);
                goto out;
      }

      call_usermodehelper_setfns(info, NULL, argv_cleanup, NULL);

      ret = call_usermodehelper_exec(info, UMH_NO_WAIT);
out:
      return ret;
}
页: [1]
查看完整版本: 从linux kernel 调用应用层AP