Пример #1
0
void msm_dmov_enqueue_cmd(unsigned id, struct msm_dmov_cmd *cmd)
{
	unsigned long irq_flags;
	unsigned int status;

	spin_lock_irqsave(&msm_dmov_lock, irq_flags);
	status = readl(DMOV_STATUS(id));
	if (list_empty(&ready_commands[id]) &&
		(status & DMOV_STATUS_CMD_PTR_RDY)) {
#if 0
		if (list_empty(&active_commands[id])) {
			PRINT_FLOW("msm_dmov_enqueue_cmd(%d), enable interrupt\n", id);
			writel(DMOV_CONFIG_IRQ_EN, DMOV_CONFIG(id));
		}
#endif
		PRINT_IO("msm_dmov_enqueue_cmd(%d), start command, status %x\n", id, status);
		list_add_tail(&cmd->list, &active_commands[id]);
		if (!channel_active)
			enable_irq(INT_ADM_AARM);
		channel_active |= 1U << id;
		writel(cmd->cmdptr, DMOV_CMD_PTR(id));
	} else {
		if (list_empty(&active_commands[id]))
			PRINT_ERROR("msm_dmov_enqueue_cmd(%d), error datamover stalled, status %x\n", id, status);

		PRINT_IO("msm_dmov_enqueue_cmd(%d), enqueue command, status %x\n", id, status);
		list_add_tail(&cmd->list, &ready_commands[id]);
	}
	spin_unlock_irqrestore(&msm_dmov_lock, irq_flags);
}
Пример #2
0
void msm_dmov_enqueue_cmd_ext(unsigned id, struct msm_dmov_cmd *cmd)
{
	unsigned long irq_flags;
	unsigned int status;

	spin_lock_irqsave(&msm_dmov_lock, irq_flags);
	if (clk_ctl == CLK_DIS)
		clk_enable(msm_dmov_clk);
	else if (clk_ctl == CLK_TO_BE_DIS)
		del_timer(&timer);
	clk_ctl = CLK_EN;

	status = readl(DMOV_STATUS(id));
	if (list_empty(&ready_commands[id]) &&
		(status & DMOV_STATUS_CMD_PTR_RDY)) {
		if (cmd->exec_func)
			cmd->exec_func(cmd);
		PRINT_IO(
		 "msm_dmov_enqueue_cmd_ext(%d), start command, status %x\n",
		 id, status);
		list_add_tail(&cmd->list, &active_commands[id]);
		if (!channel_active)
			enable_irq(INT_ADM_AARM);
		channel_active |= 1U << id;
		writel(cmd->cmdptr, DMOV_CMD_PTR(id));
	} else {
		if (!channel_active) {
			clk_ctl = CLK_TO_BE_DIS;
			mod_timer(&timer, jiffies + HZ);
		}
		if (list_empty(&active_commands[id]))
			PRINT_ERROR(
			 "msm_dmov_enqueue_cmd_ext(%d), stalled, status %x\n",
			 id, status);

		PRINT_IO(
		 "msm_dmov_enqueue_cmd_ext(%d), enqueue command, status %x\n",
		 id, status);
		list_add_tail(&cmd->list, &ready_commands[id]);
	}
	spin_unlock_irqrestore(&msm_dmov_lock, irq_flags);
}
Пример #3
0
void msm_dmov_flush(unsigned int id)
{
    unsigned long irq_flags;
    spin_lock_irqsave(&msm_dmov_lock, irq_flags);
    /* XXX not checking if flush cmd sent already */
    if (!list_empty(&active_commands[id])) {
        PRINT_IO("msm_dmov_flush(%d), send flush cmd\n", id);
        writel(DMOV_FLUSH_TYPE, DMOV_FLUSH0(id));
    }
    spin_unlock_irqrestore(&msm_dmov_lock, irq_flags);
}
Пример #4
0
int main()
{
	char filepath[256]={'\0'};
	char stat_str[1024]={'\0'};
	int count=0;
	struct stat_result result;
	memset(&result,0,sizeof(struct stat_result));
	/*char data[1024]="fsfe fa发给d f";
	char buf[1024]="fsfe fa发给d f";
	stat_word(&result,data);
	print_result(&result);
	PLOG("space_count=%d\n",result.space_count);
	stat_word(&result,buf);
	print_result(&result);
	PLOG("space_count=%d\n",result.space_count);*/
	
	while(1)
	{
		memset(&result,0,sizeof(struct stat_result));
		memset(filepath,0,256);
		memset(stat_str,0,1024);
		PRINT_IO("选择txt文本文档:");
		gets(filepath);
		if( file_open_able(filepath) != 0 )
		{
			PRINT_ERROR("file can't open !\n");
			continue;
		}
		PRINT_IO("输入您要统计的字符串:");
		gets(stat_str);
		count=stat(&result,filepath,stat_str);
		print_result(&result);
		PLOG("space_count=%d\n",result.space_count);
	}

	return 0;
}