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


C++ ERR_COPY_FROM_USER函数代码示例

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


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

示例1: msm_set_crop

static int msm_set_crop(struct msm_sync *sync, void __user *arg)
{
	struct crop_info crop;

	if (copy_from_user(&crop,
				arg,
				sizeof(struct crop_info))) {
		ERR_COPY_FROM_USER();
		return -EFAULT;
	}

	if (!sync->croplen) {
		sync->cropinfo = kmalloc(crop.len, GFP_KERNEL);
		if (!sync->cropinfo)
			return -ENOMEM;
	} else if (sync->croplen < crop.len)
		return -EINVAL;

	if (copy_from_user(sync->cropinfo,
				crop.info,
				crop.len)) {
		ERR_COPY_FROM_USER();
		kfree(sync->cropinfo);
		return -EFAULT;
	}

	sync->croplen = crop.len;

	return 0;
}
开发者ID:AnDr0id,项目名称:SGH-I747,代码行数:30,代码来源:msm_isp.c

示例2: update_hw_audio_path

static int update_hw_audio_path(void __user *arg)
{
	struct msm_audio_path audio_path;

	if (copy_from_user(&audio_path, arg, sizeof(audio_path))) {
		ERR_COPY_FROM_USER();
		return -EFAULT;
	}

	D("%s: mic=%d, dual_mic=%d, speaker=%d, headset = %d\n",
			__func__,
	       audio_path.enable_mic, audio_path.enable_dual_mic,
	       audio_path.enable_speaker, audio_path.enable_headset);

	/* Switch microphone on/off */
	turn_mic_bias_on_internal(audio_path.enable_mic,
                     audio_path.enable_dual_mic);

	/* Switch headset HW on/off */
	headphone_amp_power(audio_path.enable_headset);

	/* Switch Speaker HW on/off */
	speaker_amp_power(audio_path.enable_speaker);

	return 0;
}
开发者ID:mustafak9,项目名称:photon-android,代码行数:26,代码来源:htc_acoustic_wince.c

示例3: msm_axi_config

static int msm_axi_config(struct v4l2_subdev *sd,
		struct msm_cam_media_controller *mctl, void __user *arg)
{
	struct msm_vfe_cfg_cmd cfgcmd;

	if (copy_from_user(&cfgcmd, arg, sizeof(cfgcmd))) {
		ERR_COPY_FROM_USER();
		return -EFAULT;
	}

	switch (cfgcmd.cmd_type) {
	case CMD_AXI_CFG_PRIM:
	case CMD_AXI_CFG_SEC:
	case CMD_AXI_CFG_ZSL:
	case CMD_RAW_PICT_AXI_CFG:
	case CMD_AXI_CFG_PRIM_ALL_CHNLS:
	case CMD_AXI_CFG_PRIM|CMD_AXI_CFG_SEC:
	case CMD_AXI_CFG_PRIM|CMD_AXI_CFG_SEC_ALL_CHNLS:
	case CMD_AXI_CFG_PRIM_ALL_CHNLS|CMD_AXI_CFG_SEC:
		return msm_isp_subdev_ioctl(sd, &cfgcmd, NULL);

	default:
		pr_err("%s: unknown command type %d\n",
			__func__,
			cfgcmd.cmd_type);
		return -EINVAL;
	}

	return 0;
}
开发者ID:InvisiSource,项目名称:Haunted,代码行数:30,代码来源:msm_isp.c

示例4: msm_get_sensor_info

static int msm_get_sensor_info(struct msm_sync *sync,
				void __user *arg)
{
	int rc = 0;
	struct msm_camsensor_info info;
	struct msm_camera_sensor_info *sdata;

	if (copy_from_user(&info,
			arg,
			sizeof(struct msm_camsensor_info))) {
		ERR_COPY_FROM_USER();
		return -EFAULT;
	}

	sdata = sync->pdev->dev.platform_data;
	D("%s: sensor_name %s\n", __func__, sdata->sensor_name);

	memcpy(&info.name[0], sdata->sensor_name, MAX_SENSOR_NAME);
	info.flash_enabled = sdata->flash_data->flash_type !=
					MSM_CAMERA_FLASH_NONE;

	/* copy back to user space */
	if (copy_to_user((void *)arg,
				&info,
				sizeof(struct msm_camsensor_info))) {
		ERR_COPY_TO_USER();
		rc = -EFAULT;
	}

	return rc;
}
开发者ID:LiquidSmooth-Devices,项目名称:Deathly_Kernel_D2,代码行数:31,代码来源:msm_mctl.c

示例5: update_codec_table

static int update_codec_table(void __user * arg)
{
	struct msm_dex_command dex = {
		.cmd = PCOM_UPDATE_AUDIO,
		.has_data = 1,
		.data = DEX_UPDATE_VOC,
	};
	struct htc_voc_cal_table table;
	uint16_t *table_array;
	int rc = -EIO;

	if (copy_from_user(&table, arg, sizeof(table))) {
		ERR_COPY_FROM_USER();
		return -EFAULT;
	} else {
		D("%s : table size = %d\n", __func__, table.size);
		table_array = kmalloc(table.size, GFP_ATOMIC);
		if (table_array != NULL) {
			if (copy_from_user
			    (table_array, table.pArray, table.size)) {
				ERR_COPY_FROM_USER();
				rc = -EFAULT;
				goto free_exit;
			}
            memcpy(amss_data->codec_table, table_array, table.size);
	        msm_proc_comm_wince(&dex,0);
			rc = 0;
		}
	}

 free_exit:
	if (table_array != NULL) {
		kfree(table_array);
	}
	return rc;
}

/* Adie updates */
static void ADIE_Force8k(bool bOn) {
    int adie = readl(MSM_SHARED_RAM_BASE + 0xfc0d0);
    if (bOn) {
        adie |= 0x1;
    } else {
        adie &= ~0x1;
    }
    writel(adie, MSM_SHARED_RAM_BASE + 0xfc0d0);
}
开发者ID:mustafak9,项目名称:photon-android,代码行数:47,代码来源:htc_acoustic_wince.c

示例6: msm_irqrouter_subdev_ioctl

long msm_irqrouter_subdev_ioctl(struct v4l2_subdev *sd,
	unsigned int cmd, void *arg)
{
	struct irqrouter_ctrl_type *irqrouter_ctrl = v4l2_get_subdevdata(sd);
	struct msm_camera_irq_cfg *irq_cfg;
	struct intr_table_entry irq_req;
	int rc = 0;

	/* Handle all IRQ Router Subdev IOCTLs here.
	 * Userspace sends the composite irq configuration.
	 * IRQ Router subdev then configures the registers to group
	 * together individual core hw irqs into a composite IRQ
	 * to the MSM IRQ controller. It also registers them with
	 * the irq manager in the camera server. */
	switch (cmd) {
	case MSM_IRQROUTER_CFG_COMPIRQ:
		COPY_FROM_USER(rc, &irq_cfg, (void __user *)arg,
			sizeof(struct msm_camera_irq_cfg));
		if (rc) {
			ERR_COPY_FROM_USER();
			break;
		}

		if (!irq_cfg ||
			(irq_cfg->irq_idx < CAMERA_SS_IRQ_0) ||
			(irq_cfg->irq_idx >= CAMERA_SS_IRQ_MAX)) {
			pr_err("%s Invalid input", __func__);
			return -EINVAL;
		} else {
			irq_req.cam_hw_mask      = irq_cfg->cam_hw_mask;
			irq_req.irq_idx          = irq_cfg->irq_idx;
			irq_req.irq_num          =
			irqrouter_ctrl->def_hw_irqmap[irq_cfg->irq_idx].irq_num;
			irq_req.is_composite     = 1;
			irq_req.irq_trigger_type = IRQF_TRIGGER_RISING;
			irq_req.num_hwcore       = irq_cfg->num_hwcore;
			irq_req.data             = NULL;
			rc = msm_cam_server_request_irq(&irq_req);
			if (rc < 0) {
				pr_err("%s Error requesting comp irq %d ",
					__func__, irq_req.irq_idx);
				return rc;
			}
			irqrouter_ctrl->def_hw_irqmap
				[irq_cfg->irq_idx].is_composite = 1;
		}
		break;
	default:
		pr_err("%s Invalid cmd %d ", __func__, cmd);
		break;
	}

	return rc;
}
开发者ID:AmperificSuperKANG,项目名称:android_kernel_mako,代码行数:54,代码来源:msm_camirq_router.c

示例7: update_audio_adie_table

static int update_audio_adie_table(void __user *arg)
{
	struct adie_table table;
	char pcArray[0x80];
	int rc = -EIO;

	if (copy_from_user(&table, arg, sizeof(table))) {
		ERR_COPY_FROM_USER();
		return -EFAULT;
	} else {
		if (copy_from_user(pcArray, table.pcArray, 0x80)) {
			ERR_COPY_FROM_USER();
			return -EFAULT;
		}
		memcpy((amss_data->adie_table +
				(table.table_num * 0x80)), pcArray, 0x80);
		rc = 0;
	}

	return rc;
}
开发者ID:mustafak9,项目名称:photon-android,代码行数:21,代码来源:htc_acoustic_wince.c

示例8: update_wb_volume_table

static int update_wb_volume_table(void __user *arg)
{
	uint16_t wb_table[0xCD];

	if (copy_from_user(&wb_table, arg, sizeof(wb_table))) {
		ERR_COPY_FROM_USER();
		return -EFAULT;
	} else {
		memcpy(amss_data->wb_volume_table, wb_table, sizeof(wb_table));
	}

	return 0;
}
开发者ID:mustafak9,项目名称:photon-android,代码行数:13,代码来源:htc_acoustic_wince.c

示例9: update_ce_table

static int update_ce_table(void __user *arg)
{
	uint16_t table[0x50];

	if (copy_from_user(&table, arg, sizeof(table))) {
		ERR_COPY_FROM_USER();
		return -EFAULT;
	} else {
		memcpy(amss_data->ce_table, table, sizeof(table));
	}

	return 0;
}
开发者ID:mustafak9,项目名称:photon-android,代码行数:13,代码来源:htc_acoustic_wince.c

示例10: msm_set_dropframe_num

static int msm_set_dropframe_num(struct v4l2_subdev *sd,
			struct msm_cam_media_controller *pmctl, void __user *arg)
{
	int snap_dropframe_num;

	if (copy_from_user(&snap_dropframe_num, arg, sizeof(snap_dropframe_num))) {
		ERR_COPY_FROM_USER();
		return -EFAULT;
	} else {
		atomic_set(&pmctl->snap_dropframe_num, snap_dropframe_num);
		pr_info("%s: set snap_dropframe_num %d", __func__, atomic_read(&pmctl->snap_dropframe_num));
	}

	return 0;
}
开发者ID:InvisiSource,项目名称:Haunted,代码行数:15,代码来源:msm_isp.c

示例11: msm_axi_config

static int msm_axi_config(struct v4l2_subdev *sd,
			struct msm_sync *sync, void __user *arg)
{
	struct msm_vfe_cfg_cmd cfgcmd;

	if (copy_from_user(&cfgcmd, arg, sizeof(cfgcmd))) {
		ERR_COPY_FROM_USER();
		return -EFAULT;
	}

	switch (cfgcmd.cmd_type) {
	case CMD_AXI_CFG_VIDEO:
	case CMD_AXI_CFG_PREVIEW:
	case CMD_AXI_CFG_SNAP:
	case CMD_AXI_CFG_ZSL:
	case CMD_AXI_CFG_VIDEO_ALL_CHNLS:
	case CMD_AXI_CFG_ZSL_ALL_CHNLS:
	case CMD_RAW_PICT_AXI_CFG:
	case CMD_AXI_CFG_PRIM:
	case CMD_AXI_CFG_PRIM_ALL_CHNLS:
	case CMD_AXI_CFG_PRIM|CMD_AXI_CFG_SEC:
	case CMD_AXI_CFG_PRIM|CMD_AXI_CFG_SEC_ALL_CHNLS:
	case CMD_AXI_CFG_PRIM_ALL_CHNLS|CMD_AXI_CFG_SEC:
		/* Dont need to pass buffer information.
		 * subdev will get the buffer from media
		 * controller free queue.
		 */
		return msm_isp_subdev_ioctl(sd, &cfgcmd, NULL);
	case CMD_AXI_CFG_VPE:
		return 0;
		return msm_vpe_frame_cfg(sync, (void *)&cfgcmd);

	case CMD_STATS_AXI_CFG:
	case CMD_STATS_AF_AXI_CFG:
		return msm_stats_axi_cfg(sd, sync, &cfgcmd);

	default:
		pr_err("%s: unknown command type %d\n",
			__func__,
			cfgcmd.cmd_type);
		return -EINVAL;
	}

	return 0;
}
开发者ID:Amin-jkr,项目名称:android_kernel_semc_msm8660-1,代码行数:45,代码来源:msm_isp.c

示例12: msm_enable_dropframe

static int msm_enable_dropframe(struct v4l2_subdev *sd,
			struct msm_cam_media_controller *pmctl, void __user *arg)
{
	int dropframe_enabled;

	if (copy_from_user(&dropframe_enabled, arg, sizeof(dropframe_enabled))) {
		ERR_COPY_FROM_USER();
		return -EFAULT;
	} else {
		atomic_set(&pmctl->dropframe_enabled, dropframe_enabled);
		pr_info("%s: set dropframe_enabled %d", __func__, atomic_read(&pmctl->dropframe_enabled));

		
		if (!dropframe_enabled)
			atomic_set(&pmctl->snap_dropframe_num, 0);
	}

	return 0;
}
开发者ID:InvisiSource,项目名称:Haunted,代码行数:19,代码来源:msm_isp.c

示例13: dex_update_audio

static int dex_update_audio(int data)
{
	struct msm_dex_command dex = {
		.cmd = DEX_UPDATE_AUDIO,
		.has_data = 1,
		.data = data,
	};
	msm_dex_comm(&dex, 0);

	return 0;
}

static int dex_update_audio_done(void) {
	struct msm_dex_command dex = {
		.cmd = DEX_UPDATE_AUDIO,
		.has_data = 1,
		.data = DEX_AUDIO_DONE,
	};
	D("%s\n", __func__);
	return msm_dex_comm(&dex, 0);
}

static int update_audio_setting(void __user *arg)
{
    int ret = -EFAULT;
    struct audio_update_req req;

	if (copy_from_user(&req, arg, sizeof(struct audio_update_req))) {
		ERR_COPY_FROM_USER();
		return -EFAULT;
	} else {
        switch (req.type) {
            case PCOM_UPDATE_REQ:
                ret = dex_update_audio(req.value);
            break;

            case ADIE_FORCE8K_REQ:
                ADIE_Force8k( (req.value)?true:false );
                ret = 0;
            break;

            case ADIE_FORCE_ADIE_AWAKE_REQ:
                ADIE_ForceADIEAwake( (req.value)?true:false );
                ret = 0;
            break;

            case ADIE_FORCE_ADIE_UPDATE_REQ:
                ADIE_ForceADIEUpdate( (req.value)?true:false );
                ret = 0;
            break;

            case ADIE_UPDATE_AUDIO_METHOD:
                ADIE_UpdateAudioMethod( (req.value)?true:false );
                ret = 0;
            break;

            default:
            break;
        }
    }
    return ret;
}

static int turn_mic_bias_on(bool on, bool enable_dualmic)
{

	D("%s(%d)\n", __func__, on);

	/* enable handset mic */
	writel(0xffff0080 | (on ? 0x100 : 0), amss_data->mic_offset);
	dex_update_audio_done();

	if (amss_data->mic_bias_callback)
		amss_data->mic_bias_callback(on, enable_dualmic);

	return 0;
}
开发者ID:astarasikov,项目名称:android_kernel_htc_kovsky,代码行数:77,代码来源:htc_acoustic_wince.c

示例14: dex_update_audio

static int dex_update_audio(int data)
{
	struct msm_dex_command dex = {
		.cmd = PCOM_UPDATE_AUDIO,
		.has_data = 1,
		.data = data,
	};

	msm_proc_comm_wince(&dex, 0);

	return 0;
}

static int dex_update_audio_done(void) {
	struct msm_dex_command dex = {
		.cmd = PCOM_UPDATE_AUDIO,
		.has_data = 1,
		.data = DEX_AUDIO_DONE,
	};
	D("%s\n", __func__);
	return msm_proc_comm_wince(&dex, 0);
}

static int update_audio_setting(void __user *arg)
{
    int ret = -EFAULT;
    struct audio_update_req req;

	if (copy_from_user(&req, arg, sizeof(struct audio_update_req))) {
		ERR_COPY_FROM_USER();
		return -EFAULT;
	} else {
        switch (req.type) {
            case PCOM_UPDATE_REQ:
                ret = dex_update_audio(req.value);
            break;

            case ADIE_FORCE8K_REQ:
                ADIE_Force8k( (req.value)?true:false );
                ret = 0;
            break;

            case ADIE_FORCE_ADIE_AWAKE_REQ:
                ADIE_ForceADIEAwake( (req.value)?true:false );
                ret = 0;
            break;

            case ADIE_FORCE_ADIE_UPDATE_REQ:
                ADIE_ForceADIEUpdate( (req.value)?true:false );
                ret = 0;
            break;

            case ADIE_UPDATE_AUDIO_METHOD:
                ADIE_UpdateAudioMethod( (req.value)?true:false );
                ret = 0;
            break;

            default:
            break;
        }
    }
    return ret;
}

static int turn_mic_bias_on_internal(bool on, bool bDualMicEn)
{
	char pmSpeakerGain[2][10] = { 
			{0x93, 0, 0x93, 7, 0x93, 1, 0x93, 7, 0xFF, 0xFF},
			{0x93, 0, 0x93, 4, 0x93, 1, 0x93, 4, 0xFF, 0xFF} };


	D("%s(%d)\n", __func__, on);

	/* enable handset mic */
/* r0bin: photon doesnt have mic offset, or at least it wasnt found yet. 
 * uncomment those line is safe, we enable mic with pmic_en below
 *
	if ( machine_is_htcrhodium() && bDualMicEn && on ) {
		memcpy(amss_data->mic_offset, pmSpeakerGain[1], 10);
	} else {
		writel(0xffff0080 | (on ? 0x100 : 0), amss_data->mic_offset);   
	}
	dex_update_audio_done();

	if ( machine_is_htcrhodium() ) {
		if ( bDualMicEn && on ) {
			ADC3001_wakeup();
		} else {
			ADC3001_powerdown();
		}
	}
*/
	if (amss_data->mic_bias_callback)
		amss_data->mic_bias_callback(on);

	dex_update_audio_done();
	
	return 0;
}
开发者ID:mustafak9,项目名称:photon-android,代码行数:99,代码来源:htc_acoustic_wince.c

示例15: dex_update_audio

static int dex_update_audio(int data)
{
	struct msm_dex_command dex = {
		.cmd = PCOM_UPDATE_AUDIO,
		.has_data = 1,
		.data = data,
	};

	msm_proc_comm_wince(&dex, 0);

	return 0;
}

static int dex_update_audio_done(void) {
	struct msm_dex_command dex = {
		.cmd = PCOM_UPDATE_AUDIO,
		.has_data = 1,
		.data = DEX_AUDIO_DONE,
	};
	D("%s\n", __func__);
	return msm_proc_comm_wince(&dex, 0);
}

static int update_audio_setting(void __user *arg)
{
    int ret = -EFAULT;
    struct audio_update_req req;

	if (copy_from_user(&req, arg, sizeof(struct audio_update_req))) {
		ERR_COPY_FROM_USER();
		return -EFAULT;
	} else {
        switch (req.type) {
            case PCOM_UPDATE_REQ:
                ret = dex_update_audio(req.value);
            break;

            case ADIE_FORCE8K_REQ:
                ADIE_Force8k( (req.value)?true:false );
                ret = 0;
            break;

            case ADIE_FORCE_ADIE_AWAKE_REQ:
                ADIE_ForceADIEAwake( (req.value)?true:false );
                ret = 0;
            break;

            case ADIE_FORCE_ADIE_UPDATE_REQ:
                ADIE_ForceADIEUpdate( (req.value)?true:false );
                ret = 0;
            break;

            case ADIE_UPDATE_AUDIO_METHOD:
                ADIE_UpdateAudioMethod( (req.value)?true:false );
                ret = 0;
            break;

            default:
            break;
        }
    }
    return ret;
}

static int turn_mic_bias_on_internal(bool on, bool bDualMicEn)
{
	if (amss_data->mic_bias_callback)
		amss_data->mic_bias_callback(on);

	dex_update_audio_done();
	
	return 0;
}

int turn_mic_bias_on(bool on)
{
	return turn_mic_bias_on_internal(on, false);
}
EXPORT_SYMBOL(turn_mic_bias_on);

static int update_hw_audio_path(void __user *arg)
{
	struct msm_audio_path audio_path;

	if (copy_from_user(&audio_path, arg, sizeof(audio_path))) {
		ERR_COPY_FROM_USER();
		return -EFAULT;
	}

	D("%s: mic=%d, dual_mic=%d, speaker=%d, headset = %d\n",
			__func__,
	       audio_path.enable_mic, audio_path.enable_dual_mic,
	       audio_path.enable_speaker, audio_path.enable_headset);

	/* Switch microphone on/off */
	turn_mic_bias_on_internal(audio_path.enable_mic,
                     audio_path.enable_dual_mic);

	/* Switch headset HW on/off */
	headphone_amp_power(audio_path.enable_headset);
//.........这里部分代码省略.........
开发者ID:schlund,项目名称:2.6.35-photonic-kernel,代码行数:101,代码来源:htc_acoustic_wince.c


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