XML_RESULT_ENUM_UINT32 xml_createaproperty( void )
{
    /* 分配属性名内存,+1为保留字符串结束符用 */
    xml_ctrl.g_stlxmlcurrentnode.stproperty.ulnamelength = 0; /* 已使用的长度 */

    xml_ctrl.g_stlxmlcurrentnode.stproperty.pcpropertyname
                                = (s8*)nv_malloc(
                                   XML_NODE_LABEL_BUFF_LENGTH_ORIGINAL+2*EMMC_BLOCK_SIZE);

    if (NULL == xml_ctrl.g_stlxmlcurrentnode.stproperty.pcpropertyname)
    {
         xml_write_error_log(__LINE__, 0, XML_RESULT_FALIED_MALLOC);

        return XML_RESULT_FALIED_MALLOC;
    }

    /* 分配属性值内存,+1为保留字符串结束符用 */
    xml_ctrl.g_stlxmlcurrentnode.stproperty.ulvaluelength = 0; /* 已使用的长度 */


    xml_ctrl.g_stlxmlcurrentnode.stproperty.pcpropertyvalue
                                = (s8*)nv_malloc(
                                   XML_NODE_LABEL_BUFF_LENGTH_ORIGINAL+2*EMMC_BLOCK_SIZE);
    if (NULL == xml_ctrl.g_stlxmlcurrentnode.stproperty.pcpropertyvalue)
    {
        xml_write_error_log(__LINE__, 0, XML_RESULT_FALIED_MALLOC);

        return XML_RESULT_FALIED_MALLOC;
    }
    return XML_RESULT_SUCCEED;
}
Esempio n. 2
0
nvlist_t *
nvlist_recv(int sock, int flags)
{
	struct nvlist_header nvlhdr;
	nvlist_t *nvl, *ret;
	unsigned char *buf;
	size_t nfds, size, i;
	int *fds;

	if (buf_recv(sock, &nvlhdr, sizeof(nvlhdr)) == -1)
		return (NULL);

	if (!nvlist_check_header(&nvlhdr))
		return (NULL);

	nfds = (size_t)nvlhdr.nvlh_descriptors;
	size = sizeof(nvlhdr) + (size_t)nvlhdr.nvlh_size;

	buf = nv_malloc(size);
	if (buf == NULL)
		return (NULL);

	memcpy(buf, &nvlhdr, sizeof(nvlhdr));

	ret = NULL;
	fds = NULL;

	if (buf_recv(sock, buf + sizeof(nvlhdr), size - sizeof(nvlhdr)) == -1)
		goto out;

	if (nfds > 0) {
		fds = nv_malloc(nfds * sizeof(fds[0]));
		if (fds == NULL)
			goto out;
		if (fd_recv(sock, fds, nfds) == -1)
			goto out;
	}

	nvl = nvlist_xunpack(buf, size, fds, nfds, flags);
	if (nvl == NULL) {
		ERRNO_SAVE();
		for (i = 0; i < nfds; i++)
			close(fds[i]);
		ERRNO_RESTORE();
		goto out;
	}

	ret = nvl;
out:
	ERRNO_SAVE();
	nv_free(buf);
	nv_free(fds);
	ERRNO_RESTORE();

	return (ret);
}
XML_RESULT_ENUM_UINT32 xml_createanode(void)
{
    XML_RESULT_ENUM_UINT32 returnval = XML_RESULT_SUCCEED;


    /* 创建一个新属性 */
    returnval = xml_createaproperty();

    if(XML_RESULT_SUCCEED != returnval)
    {
        return returnval;
    }

    /* 分配节点标签内存,+1为保留字符串结束符用*/
    xml_ctrl.g_stlxmlcurrentnode.ullabellength = 0; /* 已使用的长度 */



    xml_ctrl.g_stlxmlcurrentnode.pcnodelabel = (s8*)nv_malloc(
                                      XML_NODE_LABEL_BUFF_LENGTH_ORIGINAL+2*EMMC_BLOCK_SIZE);

    if (NULL ==  xml_ctrl.g_stlxmlcurrentnode.pcnodelabel)
    {
        xml_write_error_log(__LINE__, 0, XML_RESULT_FALIED_MALLOC);

        return XML_RESULT_FALIED_MALLOC;
    }

    /* 分配节点结尾独立标签内存,+1为保留字符串结束符用 */
    xml_ctrl.g_stlxmlcurrentnode.ullabelendlength = 0; /* 已使用的长度 */

    xml_ctrl.g_stlxmlcurrentnode.pcnodelabelend = (s8*)nv_malloc(
                                        XML_NODE_LABEL_BUFF_LENGTH_ORIGINAL+2*EMMC_BLOCK_SIZE);

    if (NULL ==  xml_ctrl.g_stlxmlcurrentnode.pcnodelabelend)
    {
        xml_write_error_log(__LINE__, 0, XML_RESULT_FALIED_MALLOC);

        return XML_RESULT_FALIED_MALLOC;
    }

    /* 分配节点值内存,+1为保留字符串结束符用 */
    xml_ctrl.g_stlxmlcurrentnode.ulvaluelength = 0; /* 已使用的长度 */

    xml_ctrl.g_stlxmlcurrentnode.pcnodevalue = (s8*)nv_malloc(
                                      XML_NODE_VALUE_BUFF_LENGTH_ORIGINAL+2*EMMC_BLOCK_SIZE);

    if (NULL == xml_ctrl.g_stlxmlcurrentnode.pcnodevalue)
    {
        xml_write_error_log(__LINE__, 0, XML_RESULT_FALIED_MALLOC);

        return XML_RESULT_FALIED_MALLOC;
    }

    return returnval;
}
u32 nv_crc_write_test04(void)
{
    struct nv_ref_data_info_stru nvArray[10] = {};
    u32 count = 0;
    u32 i = 0;
    u32 ret = 0;
    u8 *pOldNvData = NULL;
    u8 *pNewNvData = NULL;

    pOldNvData = (u8 *)nv_malloc(NV_MAX_UNIT_SIZE);
    pNewNvData = (u8 *)nv_malloc(NV_MAX_UNIT_SIZE);
    if((pOldNvData == NULL)||(pNewNvData == NULL))
    {
        nv_printf("malloc error 1111\n");
        return NV_ERROR;
    }
    count = nv_test_find_edge_nv(nvArray);
    for(i = 0; i < count; i++)
    {
        ret = bsp_nvm_read(nvArray[i].itemid, (u8 *)pOldNvData, nvArray[i].nv_len);
        if(ret)
        {
            nv_printf("read error 222, nvid = 0x%x\n", nvArray[i].itemid);
            return ret;
        }
        pOldNvData[0]+=2;
        ret = bsp_nvm_write(nvArray[i].itemid, (u8 *)pOldNvData, nvArray[i].nv_len);
        if(ret)
        {
            nv_printf("read error 3333, nvid = 0x%x\n", nvArray[i].itemid);
            return ret;
        }
        ret = bsp_nvm_read(nvArray[i].itemid, (u8 *)pNewNvData, nvArray[i].nv_len);
        if((ret)||(pNewNvData[0] != pOldNvData[0]))
        {
            nv_printf("read error 4444, nvid = 0x%x\n", nvArray[i].itemid);
            return ret;
        }
        ret = nv_check_ddr_crc();
        if(ret)
        {
            nv_printf("read error 5555, nvid = 0x%x\n", nvArray[i].itemid);
            return ret;
        }
    }
    nv_free(pOldNvData);
    nv_free(pNewNvData);
    return NV_OK;
}
Esempio n. 5
0
nv_matrix_t *nv_matrix_list_alloc(int n, int m, int list)
{
	void *mem;

	int step = n * sizeof(float);//(n + 4 - (n & 3)) * sizeof(float); // SSE2
	int mem_size = sizeof(nv_matrix_t) + (step * m + 0x20) * list;
	nv_matrix_t *matrix = (nv_matrix_t *)nv_malloc(mem_size);

	if (matrix == NULL) {
		return NULL;
	}
	mem = ((char *)matrix) + sizeof(nv_matrix_t);
	matrix->v = (float *)(((char *)mem) + 0x10 - ((unsigned int)mem & 0xf));

	matrix->list = list;
	matrix->n = n;
	matrix->m = m;
	matrix->cols = m;
	matrix->rows = 1;
	matrix->step = step / sizeof(float);
	matrix->alias = 0;
	matrix->list_step = matrix->step * matrix->m;

	return matrix;
}
/*
 * Function: nv_file_open
 * Discription: open file
 * Parameter:   path  :  file path
 *              mode  :  file ops type etc:"r+","rb+","w+","wb+"
 * Output   :   file pointer
 */
FILE* nv_file_open(const s8* path,const s8* mode)
{
    struct nv_file_p* fp = NULL;

    fp = (struct nv_file_p*)nv_malloc(sizeof(struct nv_file_p));
    if(!fp)
    {
        return NULL;
    }

#ifdef BSP_CONFIG_HI3630
    if(0 == strcmp((char*)path,(char*)NV_IMG_PATH))
#else
    if(0 == strcmp((char*)path,(char*)NV_IMG_PATH))
#endif
    {
        fp->fd = BSP_fopen((char*)path,(char*)mode);
        fp->stor_type = NV_FILE_STOR_FS;
    }
    else
    {
        fp->fd = g_nv_ops.fo(path,mode);
        fp->stor_type = NV_FILE_STOR_NON_FS;
    }

    if(NULL == fp->fd)
    {
        nv_free(fp);
        return NULL;
    }

    return fp;
}
u32 nv_read_part_test(u32 nvid,u32 off,u32 len)
{
    u32 ret;
    u8* tempdata;
    u32 i= 0;

    tempdata = (u8*)nv_malloc(len +1);
    if(NULL == tempdata)
    {
        return BSP_ERR_NV_MALLOC_FAIL;
    }

    ret = bsp_nvm_readpart(nvid,off,tempdata,len);
    if(NV_OK != ret)
    {
        nv_free(tempdata);
        return BSP_ERR_NV_READ_DATA_FAIL;
    }

    for(i=0;i<len;i++)
    {
        if((i%16) == 0)
        {
            printf("\n");
        }
        printf("%2.2x ",(u8)(*(tempdata+i)));
    }

    printf("\n");
    nv_free(tempdata);
    return NV_OK;
}
Esempio n. 8
0
nv_matrix_t *
nv_vector_shallow_reshape3d(nv_matrix_t *vec, int vec_j,
							int n, int rows, int cols)
{
	nv_matrix_t *mat;

	NV_ASSERT(vec->n == n * rows * cols);
	NV_ASSERT(n < 8 || n % 8 == 0); // n >= 8 && n % 8 != 0, AVX does not work
	
	if (!(vec->n == n * rows * cols && (n < 8 || n % 8 == 0))) {
		return NULL;
	}
	mat = (nv_matrix_t *)nv_malloc(sizeof(nv_matrix_t));
	mat->list = 1;
	mat->n = n;
	mat->m = rows * cols;
	mat->rows = rows;
	mat->cols = cols;
	mat->v = &NV_MAT_V(vec, vec_j, 0);
	mat->step = n;
	mat->list_step = (int64_t)mat->step * mat->m;
	mat->alias = 1;
	
	return mat;
}
u32 nv_read_write_test(void)
{
    u32 i;
    u32 ret;
    struct nv_ctrl_file_info_stru* ctrl_info = (struct nv_ctrl_file_info_stru*)NV_GLOBAL_CTRL_INFO_ADDR;
    struct nv_ref_data_info_stru* ref_info   = (struct nv_ref_data_info_stru*)(NV_GLOBAL_CTRL_INFO_ADDR+NV_GLOBAL_CTRL_INFO_SIZE\
        +NV_GLOBAL_FILE_ELEMENT_SIZE*ctrl_info->file_num);
    u8* pdata;

    pdata = (u8*)nv_malloc(3072);
    if(NULL == pdata)
    {
        return NV_ERROR;
    }
    for(i = 0;i<ctrl_info->ref_count;i++)
    {
        printf("*****************read & write 0x%x****************\n",ref_info->itemid);
        ret = bsp_nvm_read(ref_info->itemid,pdata,ref_info->nv_len);
        if(ret)
        {
            nv_free(pdata);
            return ret;
        }
        ret = bsp_nvm_write(ref_info->itemid,pdata,ref_info->nv_len);
        if(ret)
        {
            nv_free(pdata);
            return ret;
        }
        ref_info++;
    }
    nv_free(pdata);
    return NV_OK;
}
Esempio n. 10
0
/*copy img to backup*/
u32 nv_copy_img2backup(void)
{
    u32 ret;
    FILE* fp = NULL;
    u32 total_len;
    u32 phy_off = 0;
    u32 unit_len;
    void* pdata = NULL;


    fp = BSP_fopen((char*)NV_IMG_PATH,"rb");
    if(!fp)
    {
        return BSP_ERR_NV_NO_FILE;
    }

    BSP_fseek(fp,0,SEEK_END);
    total_len = (u32)BSP_ftell(fp);
    BSP_fseek(fp,0,SEEK_SET);

    pdata = (void*)nv_malloc(NV_FILE_COPY_UNIT_SIZE);
    if(!pdata)
    {
        BSP_fclose(fp);
        return BSP_ERR_NV_MALLOC_FAIL;
    }

    nv_create_flag_file((s8*)NV_BACK_FLAG_PATH);
    while(total_len)
    {
        unit_len = (total_len >= NV_FILE_COPY_UNIT_SIZE)?NV_FILE_COPY_UNIT_SIZE : total_len;

        ret = (u32)BSP_fread(pdata,1,unit_len,fp);
        if(ret != unit_len)
        {
            nv_free(pdata);
            BSP_fclose(fp);
            return BSP_ERR_NV_READ_FILE_FAIL;
        }

        ret = (u32)bsp_nand_write((char*)NV_BACK_SEC_NAME,phy_off,pdata,unit_len);
        if(ret)
        {
            nv_free(pdata);
            BSP_fclose(fp);
            return BSP_ERR_NV_WRITE_FILE_FAIL;
        }

        phy_off += unit_len;
        total_len -= unit_len;
    }

    nv_free(pdata);
    BSP_fclose(fp);
    nv_delete_flag_file((s8*)NV_BACK_FLAG_PATH);

    return NV_OK;

}
Esempio n. 11
0
/*
 *get file info in back ,default,nvdload
 */
u32 nv_sec_file_info_init(const s8* name,struct nv_file_info_stru* sec_info)
{
    u32 ret = NV_ERROR;
    u32 file_len = 0;
    struct nv_file_info_stru info;
    struct nv_ctrl_file_info_stru ctrl_info;
    u8* file_info;

    /*first: read nv ctrl file*/
    ret = (u32)bsp_nand_read((char*)name,0,&ctrl_info,sizeof(ctrl_info),NULL);
    if(NAND_OK != ret)
    {
        printf("[%s]:patrition name %s,get file magic fail ret 0x%x,\n",__func__,name,ret);
        return ret;
    }

    /*second :check magic num in file head*/
    if(ctrl_info.magicnum != NV_CTRL_FILE_MAGIC_NUM)
    {
        printf("[%s]:enter this way  1111! %s\n",__func__,name);
        return NV_OK;
    }

    /*third: read all nv ctrl file*/
    file_info = (u8*)nv_malloc(ctrl_info.file_size+1);
    if(NULL == file_info)
    {
        printf("[%s]:enter this way  2222! %s\n",__func__,name);
        return BSP_ERR_NV_MALLOC_FAIL;
    }
    ret = (u32)bsp_nand_read((char*)name,sizeof(struct nv_ctrl_file_info_stru),file_info,ctrl_info.file_size,NULL);
    if(NAND_OK != ret)
    {
        printf("[%s]:enter this way 3333! %s\n",__func__,name);
        goto init_end;
    }

    /*fourth: count nv file len base the ctrl file info*/
    ret = nv_get_bin_crc_file_len(&ctrl_info,(struct nv_file_list_info_stru*)file_info,&file_len);
    if(ret)
    {
        printf("[%s]:enter this way 4444! %s\n",__func__,name);
        goto init_end;
    }

    info.len       = file_len;
    info.magic_num = NV_FILE_EXIST;
    info.off       = 0;


    memcpy(sec_info,&info,sizeof(info));
init_end:
    nv_free(file_info);
    return NV_OK;
}
XML_RESULT_ENUM_UINT32 xml_procinit(s8* map_path)
{
    XML_RESULT_ENUM_UINT32 returnval;

    /* 初始化全局变量 */
    xml_initglobal();

    /* 获得当前单板的product id*/   /*? UDP*/
    xml_getproductid();

    /*获取当前跳转信息*/
    xml_getjumpinfo(map_path);

    /* 创建节点信息 */
    returnval = xml_createanode();

    if (XML_RESULT_SUCCEED != returnval)
    {
        return returnval;
    }

    /* 申请存放NV Item的值的缓冲区,+1为保留字符串结束符用 */  /*分配固定空间*/
    xml_ctrl.g_puclnvitem = (u8 *)nv_malloc(
                                         XML_NODE_VALUE_BUFF_LENGTH_ORIGINAL+2*EMMC_BLOCK_SIZE);
    if (NULL == xml_ctrl.g_puclnvitem)
    {
        xml_write_error_log(__LINE__, 0, XML_RESULT_FALIED_MALLOC);
        return XML_RESULT_FALIED_MALLOC;
    }

    /* 申请读取文件数据的缓冲区,+1为保留字符串结束符用 */ /*是否分配空间?*/
    xml_ctrl.g_pclfilereadbuff = (s8*)nv_malloc(
                                                XML_FILE_READ_BUFF_SIZE+2*EMMC_BLOCK_SIZE);
    if (NULL == xml_ctrl.g_pclfilereadbuff)
    {
        xml_write_error_log(__LINE__, 0, XML_RESULT_FALIED_MALLOC);
        return XML_RESULT_FALIED_MALLOC;
    }

    return XML_RESULT_SUCCEED;
}
Esempio n. 13
0
nv_lr_t *
nv_lr_alloc(int n, int k)
{
	nv_lr_t *lr = (nv_lr_t *)nv_malloc(sizeof(nv_lr_t));
	lr->n = n;
	lr->k = k;
	lr->w = nv_matrix_alloc(lr->n, k);

	nv_matrix_zero(lr->w);

	return lr;
}
Esempio n. 14
0
u32 nvm_read_randex(u32 nvid,u32 modem_id)
{
	u32 ret;    u8* tempdata;    u32 i= 0;
	struct nv_ref_data_info_stru ref_info = {0};
	struct nv_file_list_info_stru file_info = {0};

	ret = nv_search_byid(nvid, (u8*)NV_GLOBAL_CTRL_INFO_ADDR,&ref_info,&file_info);
	if(NV_OK != ret)
	{
		return ret;
	}
	if(ref_info.nv_len == 0)
	{
		return NV_ERROR;
	}
    /*lint -save -e515 -e516*/
	printf_nv("[0x%x]:len 0x%x,off 0x%x,file id %d\n",nvid,ref_info.nv_len,ref_info.nv_off,ref_info.file_id);
	printf_nv("[0x%x]:dsda 0x%x\n",nvid,ref_info.modem_num);
    /*lint -restore*/

	/*lint -save -e516*/
	tempdata = (u8*)nv_malloc(ref_info.nv_len +1);
	/*lint -restore +e516*/
	if(NULL == tempdata)
	{
		return BSP_ERR_NV_MALLOC_FAIL;
	}
	ret = bsp_nvm_dcread(modem_id,nvid,tempdata,ref_info.nv_len);
	if(NV_OK != ret)
	{
		nv_free(tempdata);
		return BSP_ERR_NV_READ_DATA_FAIL;
	}
    /*lint -save -e515 -e516*/
	for(i=0;i<ref_info.nv_len;i++)
	{
		if((i%32) == 0)
		{
			printf_nv("\n");
		}
		printf_nv("%02x ",(u8)(*(tempdata+i)));
	}

	printf_nv("\n\n");
    /*lint -restore*/
	nv_free(tempdata);

	return 0;

}
Esempio n. 15
0
nv_plsi_t *
nv_plsi_alloc(int d, int w, int k)
{
	nv_plsi_t *p = (nv_plsi_t *)nv_malloc(sizeof(nv_plsi_t));

	p->k = k;
	p->d = d;
	p->w = w;

	p->z = nv_matrix_alloc(p->k, 1);
	p->dz = nv_matrix_alloc(p->k, p->d);
	p->wz = nv_matrix_alloc(p->k, p->w);

	return p;
}
Esempio n. 16
0
nv_matrix_t *
nv_matrix_alias(const nv_matrix_t *parent, int sn, int sm, int n, int m)
{
	nv_matrix_t *matrix = (nv_matrix_t *)nv_malloc(sizeof(nv_matrix_t));
	matrix->list = 1;
	matrix->n = n;
	matrix->m = m;
	matrix->rows = 1;
	matrix->cols = m;
	matrix->v = &parent->v[sm * parent->step + sn];
	matrix->step = parent->step;
	matrix->list_step = matrix->step * matrix->m;
	matrix->alias = 1;

	return matrix;
}
Esempio n. 17
0
nv_mlp_t *nv_mlp_alloc(int input, int hidden, int k)
{
	nv_mlp_t *mlp = (nv_mlp_t *)nv_malloc(sizeof(nv_mlp_t));

	mlp->input = input;
	mlp->hidden = hidden;
	mlp->output = k;
	mlp->dropout = 0.0f;
	mlp->noise = 0.0f;
	mlp->input_w = nv_matrix_alloc(input, hidden);
	mlp->hidden_w = nv_matrix_alloc(mlp->input_w->m, k);
	mlp->input_bias = nv_matrix_alloc(1, hidden);
	mlp->hidden_bias = nv_matrix_alloc(1, k);

	return mlp;
}
Esempio n. 18
0
nv_matrix_t *
nv_matrix_list_get(const nv_matrix_t *parent, int list)
{
	nv_matrix_t *matrix = (nv_matrix_t *)nv_malloc(sizeof(nv_matrix_t));
	matrix->list = 1;
	matrix->n = parent->n;
	matrix->m = parent->m;
	matrix->rows = parent->rows;
	matrix->cols = parent->cols;
	matrix->v = &NV_MAT_LIST_V(parent, list, 0, 0);
	matrix->step = parent->step;
	matrix->list_step = parent->list_step;
	matrix->alias = 1;

	return matrix;
}
void xml_getjumpinfo(s8* map_path)
{
    FILE* fp = NULL;
    s32 ret = 0;
    u32 file_len;
    XNV_MAP_HEAD_STRU* map_file = NULL;
    XNV_MAP_PRODUCT_INFO product_info = {0};

    if(!map_path)
        return;
    fp = nv_emmc_open(map_path,(s8*)NV_FILE_READ);
    if(!fp)
        return;
    file_len = nv_boot_get_file_len(fp);

    /* coverity[negative_returns] */
    map_file = (XNV_MAP_HEAD_STRU*)nv_malloc(file_len+2*EMMC_BLOCK_SIZE);
    if(!map_file)
    {
        nv_emmc_close(fp);
        return;
    }

    ret = nv_emmc_read((u8*)map_file,1,file_len,fp);
/*lint -save -e737*/
    if(ret != file_len)
    {
        goto out;
    }
/*lint -restore +e737*/
    ret = xml_search_productinfo((u32)(xml_ctrl.g_stlxmlproductid),(u8*)map_file,&product_info);
    if(ret)
        goto out;

    memcpy(&xml_ctrl.g_stlxmljumpinfo,&product_info,sizeof(product_info));
    xml_ctrl.g_stlxmljumpflag = XML_DECODE_STATUS_JUMP;
    nv_emmc_close(fp);
    nv_free(map_file);
    return;

out:
    nv_emmc_close(fp);
    nv_free(map_file);
    memset(&xml_ctrl.g_stlxmljumpinfo,0,sizeof(xml_ctrl.g_stlxmljumpinfo));
    xml_ctrl.g_stlxmljumpflag = XML_DECODE_STATUS_NOJUMP;
    return;
}
Esempio n. 20
0
int *
nvlist_descriptors(const nvlist_t *nvl, size_t *nitemsp)
{
	size_t nitems;
	int *fds;

	nitems = nvlist_ndescriptors(nvl);
	fds = nv_malloc(sizeof(fds[0]) * (nitems + 1));
	if (fds == NULL)
		return (NULL);
	if (nitems > 0)
		nvlist_xdescriptors(nvl, fds);
	fds[nitems] = -1;
	if (nitemsp != NULL)
		*nitemsp = nitems;
	return (fds);
}
Esempio n. 21
0
nvlist_t *
nvlist_create(int flags)
{
	nvlist_t *nvl;

	PJDLOG_ASSERT((flags & ~(NV_FLAG_PUBLIC_MASK)) == 0);

	nvl = nv_malloc(sizeof(*nvl));
	if (nvl == NULL)
		return (NULL);
	nvl->nvl_error = 0;
	nvl->nvl_flags = flags;
	nvl->nvl_parent = NULL;
	TAILQ_INIT(&nvl->nvl_head);
	nvl->nvl_magic = NVLIST_MAGIC;

	return (nvl);
}
Esempio n. 22
0
nv_mlp3_t *nv_mlp3_alloc(int input, int hidden1, int hidden2, int k)
{
	nv_mlp3_t *mlp = (nv_mlp3_t *)nv_malloc(sizeof(nv_mlp3_t));

	mlp->input = input;
	mlp->hidden1 = hidden1;
	mlp->hidden2 = hidden2;
	mlp->output = k;

	mlp->input_w = nv_matrix_alloc(input, hidden1);
	mlp->hidden1_w = nv_matrix_alloc(hidden1, hidden2);
	mlp->hidden2_w = nv_matrix_alloc(hidden2, k);
	mlp->input_bias = nv_matrix_alloc(1, hidden1);
	mlp->hidden1_bias = nv_matrix_alloc(1, hidden2);
	mlp->hidden2_bias = nv_matrix_alloc(1, k);

	return mlp;
}
Esempio n. 23
0
u32 nv_read_rand_test(u32 nvid)
{
    u32 ret;
    u8* tempdata;
    u32 i= 0;
    struct nv_ref_data_info_stru ref_info = {0};
    struct nv_file_list_info_stru file_info = {0};

    ret = nv_search_byid(nvid, (u8*)NV_GLOBAL_CTRL_INFO_ADDR,&ref_info,&file_info);
    if(NV_OK != ret)
    {
        return ret;
    }
    if(ref_info.nv_len == 0)
    {
        return NV_ERROR;
    }

    tempdata = (u8*)nv_malloc((u32)(ref_info.nv_len) +1);
    if(NULL == tempdata)
    {
        return BSP_ERR_NV_MALLOC_FAIL;
    }

    ret = bsp_nvm_read(nvid,tempdata,ref_info.nv_len);
    if(NV_OK != ret)
    {
        nv_free(tempdata);
        return BSP_ERR_NV_READ_DATA_FAIL;
    }

    for(i=0;i<ref_info.nv_len;i++)
    {
        if((i%16) == 0)
        {
            printf("\n");
        }
        printf("%2.2x ",(u8)(*(tempdata+i)));
    }

    printf("\n");
    nv_free(tempdata);
    return NV_OK;
}
Esempio n. 24
0
u32 nv_function_test(void)
{
    u32 i;
    u32 ret;
    struct nv_ctrl_file_info_stru* ctrl_info = (struct nv_ctrl_file_info_stru*)NV_GLOBAL_CTRL_INFO_ADDR;
    struct nv_ref_data_info_stru* ref_info   = (struct nv_ref_data_info_stru*)(NV_GLOBAL_CTRL_INFO_ADDR+NV_GLOBAL_CTRL_INFO_SIZE\
        +NV_GLOBAL_FILE_ELEMENT_SIZE*ctrl_info->file_num);
    u8* pdata;
    u32 start,end;


    start = bsp_get_slice_value();

    pdata = (u8*)nv_malloc(3072);
    if(NULL == pdata)
    {
        return NV_ERROR;
    }
    for(i = 0;i<100;i++)
    {
        printf("*****************read & write 0x%x****************\n",ref_info->itemid);
        ret = bsp_nvm_read(ref_info->itemid,pdata,ref_info->nv_len);
        if(ret)
        {
            nv_free(pdata);
            return ret;
        }
        ret = bsp_nvm_write(ref_info->itemid,pdata,ref_info->nv_len);
        if(ret)
        {
            nv_free(pdata);
            return ret;
        }
        ref_info++;
    }
    end = bsp_get_slice_value();
    nv_free(pdata);

    printf("[%s]:slice 0x%x\n",__func__,end-start);
    return NV_OK;
}
Esempio n. 25
0
nv_pstable_t *
nv_pstable_alloc_ex(int vector_dim, int l, int k, float r)
{
	nv_pstable_t *ps = (nv_pstable_t *)nv_malloc(sizeof(nv_pstable_t));
	int m, n;

	memset(ps, 0, sizeof(*ps));

	ps->l = l;
	ps->k = k;
	ps->r = r;

	ps->a = nv_matrix3d_alloc(vector_dim, ps->l, ps->k);
	ps->b = nv_matrix3d_alloc(1, ps->l, ps->k);
	ps->r1 = nv_matrix3d_alloc(1, ps->l, ps->k);
	ps->r2 = nv_matrix3d_alloc(1, ps->l, ps->k);

	for (m = 0; m < ps->a->m; ++m) {
		for (n = 0; n < ps->a->n; ++n) {
			NV_MAT_V(ps->a, m, n) = nv_gaussian_rand(0.0f, 1.0f);
		}
	}
	for (m = 0; m < ps->b->m; ++m) {
		for (n = 0; n < ps->b->n; ++n) {
			NV_MAT_V(ps->b, m, n) = nv_rand() * ps->r;
		}
	}
	for (m = 0; m < ps->r1->m; ++m) {
		for (n = 0; n < ps->r1->n; ++n) {
			NV_MAT_V(ps->r1, m, n) = NV_FLOOR(
				nv_rand() * NV_PSTABLE_HASH_MAX * 2.0f - NV_PSTABLE_HASH_MAX
			);
			NV_MAT_V(ps->r2, m, n) = NV_FLOOR(
				nv_rand() * NV_PSTABLE_HASH_MAX * 2.0f - NV_PSTABLE_HASH_MAX
			);
		}
	}

	return ps;
}
Esempio n. 26
0
u32 nv_write_test_08(u32 itemid)
{
    struct nv_file_list_info_stru file_info = {};
    struct nv_ref_data_info_stru ref_info = {};
    u8* pData = NULL;
    u32 ret = 0;

    pData = (u8*)nv_malloc(2*2048);
    if(NULL == pData)
    {
        nv_printf("alloc error\n");
        return NV_ERROR;
    }
    ret = nv_search_byid(itemid, (u8 *)NV_GLOBAL_CTRL_INFO_ADDR, &ref_info, &file_info);
    if(ret)
    {
        nv_printf("nv_search_byid error\n");
        nv_free(pData);
        return ret;
    }
    ret = bsp_nvm_read(itemid, pData, ref_info.nv_len);
    if(ret)
    {
        nv_printf("bsp_nvm_read error, ret = 0x%x 1111\n", ret);
        return ret;
    }
    pData[0]++;
    ret = bsp_nvm_write(itemid, pData, ref_info.nv_len);
    if(ret)
    {
        nv_printf("bsp_nvm_read error, ret = 0x%x 2222\n", ret);
        return ret;
    }
    nv_free(pData);
    return NV_OK;
}
Esempio n. 27
0
void
nv_plsi_emstep(nv_plsi_t *p, const nv_matrix_t *data, float tem_beta)
{
	int i, z, w, d;
	float zsum;
	float zfactor = 0.0f;
	nv_matrix_t *zfq= nv_matrix_alloc(p->k, 1);
	nv_matrix_t *zdw_sum = nv_matrix_alloc(p->w, p->d);
#ifdef _OPENMP
	int threads = nv_omp_procs();
#else
	int threads = 1;
#endif
	nv_matrix_t **zdw_val = (nv_matrix_t **)nv_malloc(sizeof(nv_matrix_t *) * threads);

	for (i = 0; i < threads; ++i) {
		zdw_val[i] = nv_matrix_alloc(p->w, p->d);
	}

	/* sum */
#ifdef _OPENMP
#pragma omp parallel for private(w, z)
#endif
	for (d = 0; d < p->d; ++d) {
		for (w = 0; w < p->w; ++w) {
			float sum = 0.0f;
			for (z = 0; z < p->k; ++z) {
				sum += NV_MAT_V(p->dz, d, z) * (powf(NV_MAT_V(p->wz, w, z) * NV_MAT_V(p->z, 0, z), tem_beta));
			}
			if (sum != 0.0f) {
				NV_MAT_V(zdw_sum, d, w) = 1.0f / sum;
			} else {
				NV_MAT_V(zdw_sum, d, w) = 0.0f;
			}
		}
	}

	zsum = 0.0f;
#ifdef _OPENMP
#pragma omp parallel for private(d, w) reduction(+:zsum)
#endif
	for (z = 0; z < p->k; ++z) {
		float sum = 0.0f;
		float factor = 0.0f;
#ifdef _OPENMP
		int thread_idx = nv_omp_thread_id();
#else
		int thread_idx = 0;
#endif

		/* zdw val */
		for (d = 0; d < p->d; ++d) {
			for (w = 0; w < p->w; ++w) {
				/* (t-1) dz,wz,z */
				NV_MAT_V(zdw_val[thread_idx], d, w) = NV_MAT_V(p->dz, d, z) 
					* (powf(NV_MAT_V(p->wz, w, z) * NV_MAT_V(p->z, 0, z), tem_beta)) * NV_MAT_V(zdw_sum, d, w);
			}
		}
		for (d = 0; d < p->d; ++d) {
			for (w = 0; w < p->w; ++w) {
				sum += NV_MAT_V(data, d, w) * NV_MAT_V(zdw_val[thread_idx], d, w);
			}
		}
		if (sum != 0.0f) {
			factor = 1.0f / sum;
		}

		for (d = 0; d < p->d; ++d) {
			NV_MAT_V(p->dz, d, z) = 0.0f;
		}
		for (w = 0; w < p->w; ++w) {
			NV_MAT_V(p->wz, w, z) = 0.0f;
		}

		/* p(d,z), p(w,z) */
		for (d = 0; d < p->d; ++d) {
			for (w = 0; w < p->w; ++w) {
				float ndwf = NV_MAT_V(data, d, w) * NV_MAT_V(zdw_val[thread_idx], d, w) * factor;
				NV_MAT_V(p->dz, d, z) += ndwf;
				NV_MAT_V(p->wz, w, z) += ndwf;
			}
		}
		zsum += sum;
		NV_MAT_V(zfq, 0, z) = sum;
	}

	/* p(z) */
	if (zsum != 0.0f) {
		zfactor = 1.0f / zsum;
	}
	for (z = 0; z < p->k; ++z) {
		NV_MAT_V(p->z, 0, z) = NV_MAT_V(zfq, 0, z) * zfactor;
	}
	for (i = 0; i < threads; ++i) {
		nv_matrix_free(&zdw_val[i]);
	}
	nv_free(zdw_val);
	nv_matrix_free(&zfq);
	nv_matrix_free(&zdw_sum);
}
Esempio n. 28
0
void show_emmc_info(void)
{
    struct nv_dload_packet_head_stru nv_dload;
    struct nv_ctrl_file_info_stru ctrl_info;
    u8* file_info;
    s32 ret = -1 ;

    printf("\n******************img info*********************\n");
    ret = bsp_nand_read((char*)NV_SYS_SEC_NAME,0,&ctrl_info,sizeof(ctrl_info),NULL);
    if(ret)
        return;
    if(ctrl_info.magicnum != NV_CTRL_FILE_MAGIC_NUM)
    {
        ctrl_info.file_size = 144;
    }
    file_info = (u8*)nv_malloc(ctrl_info.file_size+1);
    if(NULL == file_info)
    {
        return;
    }
    ret = bsp_nand_read((char*)NV_SYS_SEC_NAME,sizeof(ctrl_info),file_info,ctrl_info.file_size,NULL);
    if(ret)
        return;
    printf("\n********sys mem info*******\n");
    printf("nv   :flag 0x%x,off 0x%x,len 0x%x\n",g_emmc_info.sys_nv.magic_num,\
        g_emmc_info.sys_nv.off,g_emmc_info.sys_nv.len);
    printf("\n************sys info in nand**************\n");
    printf("magic :0x%x,file num: %d,nv num :0x%x,modem num :%d\n",\
        ctrl_info.magicnum,ctrl_info.file_num,ctrl_info.ref_count,ctrl_info.modem_num);

    printf("\n******************dload info*******************\n");
    ret = bsp_nand_read((char*)NV_DLOAD_SEC_NAME,0,&nv_dload,sizeof(nv_dload),NULL);
    if(ret)
        return;
    printf("\n********dload mem info*******\n");
    printf("nv   : flag 0x%x,len 0x%x,off 0x%x\n",g_emmc_info.nv_dload.nv_bin.magic_num,\
        g_emmc_info.nv_dload.nv_bin.len,g_emmc_info.nv_dload.nv_bin.off);
    printf("xnv1 : flag 0x%x,len 0x%x,off 0x%x\n",g_emmc_info.nv_dload.xnv_xml[0].magic_num,\
        g_emmc_info.nv_dload.xnv_xml[0].len,g_emmc_info.nv_dload.xnv_xml[0].off);
    printf("cust1: flag 0x%x,len 0x%x,off 0x%x\n",g_emmc_info.nv_dload.cust_xml[0].magic_num,\
        g_emmc_info.nv_dload.cust_xml[0].len,g_emmc_info.nv_dload.cust_xml[0].off);

    printf("xnv2 : flag 0x%x,len 0x%x,off 0x%x\n",g_emmc_info.nv_dload.xnv_xml[1].magic_num,\
        g_emmc_info.nv_dload.xnv_xml[1].len,g_emmc_info.nv_dload.xnv_xml[1].off);
    printf("cust2: flag 0x%x,len 0x%x,off 0x%x\n",g_emmc_info.nv_dload.cust_xml[1].magic_num,\
        g_emmc_info.nv_dload.cust_xml[1].len,g_emmc_info.nv_dload.cust_xml[1].off);
    printf("xnv map1: flag 0x%x,len 0x%x,off 0x%x\n",g_emmc_info.nv_dload.xnv_map[0].magic_num,\
        g_emmc_info.nv_dload.xnv_map[0].len,g_emmc_info.nv_dload.xnv_map[0].off);
    printf("xnv map2: flag 0x%x,len 0x%x,off 0x%x\n",g_emmc_info.nv_dload.xnv_map[1].magic_num,\
        g_emmc_info.nv_dload.xnv_map[1].len,g_emmc_info.nv_dload.xnv_map[1].off);
    printf("\n********dload mtd info*******\n");
    printf("nv   : flag 0x%x,len 0x%x,off 0x%x\n",nv_dload.nv_bin.magic_num,\
        nv_dload.nv_bin.len,nv_dload.nv_bin.off);
    printf("xnv1 : flag 0x%x,len 0x%x,off 0x%x\n",nv_dload.xnv_xml[0].magic_num,\
        nv_dload.xnv_xml[0].len,nv_dload.xnv_xml[0].off);
    printf("cust1: flag 0x%x,len 0x%x,off 0x%x\n",nv_dload.cust_xml[0].magic_num,\
        nv_dload.cust_xml[0].len,nv_dload.cust_xml[0].off);

    printf("xnv2 : flag 0x%x,len 0x%x,off 0x%x\n",nv_dload.xnv_xml[1].magic_num,\
        nv_dload.xnv_xml[1].len,nv_dload.xnv_xml[1].off);
    printf("cust2: flag 0x%x,len 0x%x,off 0x%x\n",nv_dload.cust_xml[1].magic_num,\
        nv_dload.cust_xml[1].len,nv_dload.cust_xml[1].off);

    printf("xnv map1: flag 0x%x,len 0x%x,off 0x%x\n",nv_dload.xnv_map[0].magic_num,\
        nv_dload.xnv_map[0].len,nv_dload.xnv_map[0].off);
    printf("xnv map2: flag 0x%x,len 0x%x,off 0x%x\n",nv_dload.xnv_map[1].magic_num,\
        nv_dload.xnv_map[1].len,nv_dload.xnv_map[1].off);

    printf("\n******************backup info******************\n");
    printf("\n********backup mem info******\n");
    printf("backup flag: 0x%x, len : 0x%x, off:0x%x\n",g_emmc_info.bak_sec.magic_num,\
        g_emmc_info.bak_sec.len,g_emmc_info.bak_sec.off);
    printf("\n********backup mtd info******\n");
    ret = bsp_nand_read((char*)NV_BACK_SEC_NAME,0,&ctrl_info,sizeof(ctrl_info),NULL);
    if(ret)
        return;
    if(ctrl_info.magicnum != NV_CTRL_FILE_MAGIC_NUM)
    {
        ctrl_info.file_size = 144;
    }
    ret = bsp_nand_read((char*)NV_BACK_SEC_NAME,sizeof(ctrl_info),file_info,ctrl_info.file_size,NULL);
    if(ret)
        return;
    printf("magic :0x%x,file num: %d,nv num :0x%x,modem num :%d\n",\
        ctrl_info.magicnum,ctrl_info.file_num,ctrl_info.ref_count,ctrl_info.modem_num);

    printf("\n******************default info*****************\n");
    printf("\n********default mem info*****\n");
    printf("default flag: 0x%x, len : 0x%x, off:0x%x\n",g_emmc_info.def_sec.magic_num,\
        g_emmc_info.def_sec.len,g_emmc_info.def_sec.off);

    printf("\n********default mtd info*****\n");
    ret = bsp_nand_read((char*)NV_DEF_SEC_NAME,0,&ctrl_info,sizeof(ctrl_info),NULL);
    if(ret)
        return;
    if(ctrl_info.magicnum != NV_CTRL_FILE_MAGIC_NUM)
    {
        ctrl_info.file_size = 144;
    }
    ret = bsp_nand_read((char*)NV_DEF_SEC_NAME,sizeof(ctrl_info),file_info,ctrl_info.file_size,NULL);
    if(ret)
        return;
    printf("magic :0x%x,file num: %d,nv num :0x%x,modem num :%d\n",\
        ctrl_info.magicnum,ctrl_info.file_num,ctrl_info.ref_count,ctrl_info.modem_num);


    nv_free(file_info);
}
Esempio n. 29
0
s32 nv_file_copy(s8* dst_path,s8* src_path,bool path)
{
    u32 ret = NV_ERROR;
    FILE* dst_fp = NULL;
    FILE* src_fp = NULL;
    u32 u_ulen;  /*文件拷贝单位长度*/
    u32 u_tlen;  /*源文件总长度*/
    void* pdata;   /*文件拷贝临时buffer*/


    src_fp = nv_file_open(src_path,NV_FILE_READ);
    dst_fp = nv_file_open(dst_path,NV_FILE_WRITE);
    if(!src_fp || !dst_fp)
    {
        nv_printf("open fail src :%p,dst :%p\n",src_fp,dst_fp);
        return BSP_ERR_NV_NO_FILE;
    }

    u_tlen = nv_get_file_len(src_fp);
    if(u_tlen >= NV_MAX_FILE_SIZE)
    {
        nv_printf("u_tlen :0x%x\n",u_tlen);
        goto out;
    }

    pdata = (void*)nv_malloc(NV_FILE_COPY_UNIT_SIZE);/*拷贝单位长度为16k*/
    if(!pdata)
    {
        nv_printf("malloc failed !\n");
        goto out;
    }

    while(u_tlen)
    {
        u_ulen = u_tlen > NV_FILE_COPY_UNIT_SIZE ? u_tlen :NV_FILE_COPY_UNIT_SIZE;

        ret = (u32)nv_file_read(pdata,1,u_ulen,src_fp);
        if(ret != u_ulen)
        {
            nv_printf("ret :0x%x u_ulen: 0x%x\n",ret,u_ulen);
            goto out1;
        }

        ret = (u32)nv_file_write(pdata,1,u_ulen,dst_fp);
        if(ret != u_ulen)
        {
            nv_printf("ret :0x%x u_ulen: 0x%x\n",ret,u_ulen);
            goto out1;
        }

        u_tlen -= u_ulen;
    }

    (void)nv_file_close(src_fp);
    (void)nv_file_close(dst_fp);
    nv_free(pdata);
    return NV_OK;


out1:
    nv_free(pdata);
out:
    (void)nv_file_close(src_fp);
    (void)nv_file_close(dst_fp);
    return -1;
}
Esempio n. 30
0
static void *
nvlist_xpack(const nvlist_t *nvl, int64_t *fdidxp, size_t *sizep)
{
	unsigned char *buf, *ptr;
	size_t left, size;
	const nvlist_t *tmpnvl;
	nvpair_t *nvp, *tmpnvp;
	void *cookie;

	NVLIST_ASSERT(nvl);

	if (nvl->nvl_error != 0) {
		ERRNO_SET(nvl->nvl_error);
		return (NULL);
	}

	size = nvlist_size(nvl);
	buf = nv_malloc(size);
	if (buf == NULL)
		return (NULL);

	ptr = buf;
	left = size;

	ptr = nvlist_pack_header(nvl, ptr, &left);

	nvp = nvlist_first_nvpair(nvl);
	while (nvp != NULL) {
		NVPAIR_ASSERT(nvp);

		nvpair_init_datasize(nvp);
		ptr = nvpair_pack_header(nvp, ptr, &left);
		if (ptr == NULL) {
			nv_free(buf);
			return (NULL);
		}
		switch (nvpair_type(nvp)) {
		case NV_TYPE_NULL:
			ptr = nvpair_pack_null(nvp, ptr, &left);
			break;
		case NV_TYPE_BOOL:
			ptr = nvpair_pack_bool(nvp, ptr, &left);
			break;
		case NV_TYPE_NUMBER:
			ptr = nvpair_pack_number(nvp, ptr, &left);
			break;
		case NV_TYPE_STRING:
			ptr = nvpair_pack_string(nvp, ptr, &left);
			break;
		case NV_TYPE_NVLIST:
			tmpnvl = nvpair_get_nvlist(nvp);
			ptr = nvlist_pack_header(tmpnvl, ptr, &left);
			if (ptr == NULL)
				goto out;
			tmpnvp = nvlist_first_nvpair(tmpnvl);
			if (tmpnvp != NULL) {
				nvl = tmpnvl;
				nvp = tmpnvp;
				continue;
			}
			ptr = nvpair_pack_nvlist_up(ptr, &left);
			break;
#ifndef _KERNEL
		case NV_TYPE_DESCRIPTOR:
			ptr = nvpair_pack_descriptor(nvp, ptr, fdidxp, &left);
			break;
#endif
		case NV_TYPE_BINARY:
			ptr = nvpair_pack_binary(nvp, ptr, &left);
			break;
		default:
			PJDLOG_ABORT("Invalid type (%d).", nvpair_type(nvp));
		}
		if (ptr == NULL) {
			nv_free(buf);
			return (NULL);
		}
		while ((nvp = nvlist_next_nvpair(nvl, nvp)) == NULL) {
			cookie = NULL;
			nvl = nvlist_get_parent(nvl, &cookie);
			if (nvl == NULL)
				goto out;
			nvp = cookie;
			ptr = nvpair_pack_nvlist_up(ptr, &left);
			if (ptr == NULL)
				goto out;
		}
	}

out:
	if (sizep != NULL)
		*sizep = size;
	return (buf);
}