Пример #1
0
int
cfe_getfwinfo(cfe_fwinfo_t *info)
{
    cfe_xiocb_t xiocb;

    xiocb.xiocb_fcode = CFE_CMD_FW_GETINFO;
    xiocb.xiocb_status = 0;
    xiocb.xiocb_handle = 0;
    xiocb.xiocb_flags = 0;
    xiocb.xiocb_psize = sizeof(xiocb_fwinfo_t);

    cfe_iocb_dispatch(&xiocb);

    if (xiocb.xiocb_status < 0)
        return xiocb.xiocb_status;

    info->fwi_version = xiocb.plist.xiocb_fwinfo.fwi_version;
    info->fwi_totalmem = xiocb.plist.xiocb_fwinfo.fwi_totalmem;
    info->fwi_flags = xiocb.plist.xiocb_fwinfo.fwi_flags;
    info->fwi_boardid = xiocb.plist.xiocb_fwinfo.fwi_boardid;
    info->fwi_bootarea_va = xiocb.plist.xiocb_fwinfo.fwi_bootarea_va;
    info->fwi_bootarea_pa = xiocb.plist.xiocb_fwinfo.fwi_bootarea_pa;
    info->fwi_bootarea_size = xiocb.plist.xiocb_fwinfo.fwi_bootarea_size;
#if 0
    info->fwi_reserved1 = xiocb.plist.xiocb_fwinfo.fwi_reserved1;
    info->fwi_reserved2 = xiocb.plist.xiocb_fwinfo.fwi_reserved2;
    info->fwi_reserved3 = xiocb.plist.xiocb_fwinfo.fwi_reserved3;
#endif

    return 0;
}
Пример #2
0
int cfe_getfwinfo(cfe_fwinfo_t * info)
{
	struct cfe_xiocb xiocb;

	xiocb.xiocb_fcode = CFE_CMD_FW_GETINFO;
	xiocb.xiocb_status = 0;
	xiocb.xiocb_handle = 0;
	xiocb.xiocb_flags = 0;
	xiocb.xiocb_psize = sizeof(struct xiocb_fwinfo);

	cfe_iocb_dispatch(&xiocb);

	if (xiocb.xiocb_status < 0)
		return xiocb.xiocb_status;

	info->fwi_version = xiocb.plist.xiocb_fwinfo.fwi_version;
	info->fwi_totalmem = xiocb.plist.xiocb_fwinfo.fwi_totalmem;
	info->fwi_flags = xiocb.plist.xiocb_fwinfo.fwi_flags;
	info->fwi_boardid = xiocb.plist.xiocb_fwinfo.fwi_boardid;
	info->fwi_bootarea_va = xiocb.plist.xiocb_fwinfo.fwi_bootarea_va;
	info->fwi_bootarea_pa = xiocb.plist.xiocb_fwinfo.fwi_bootarea_pa;
	info->fwi_bootarea_size =
	    xiocb.plist.xiocb_fwinfo.fwi_bootarea_size;

	return 0;
}
Пример #3
0
Файл: cfe.c Проект: aircross/ray
int cfe_ioctl(int handle, unsigned int ioctlnum,
	      unsigned char *buffer, int length,
	      int *retlen, u64 offset)
{
	struct cfe_iocb iocb;
	int err;

	memset(&iocb, 0, sizeof(iocb));
	iocb.fcode = CFE_CMD_DEV_IOCTL;
	iocb.handle = handle;
	iocb.psize = sizeof(struct cfe_iocb_buf);
	iocb.buffer.offset = offset;
	iocb.buffer.ioctlcmd = ioctlnum;
	iocb.buffer.ptr = PTR_TO_CFE(buffer);
	iocb.buffer.length = length;

	err = cfe_iocb_dispatch(&iocb);
	if (CFE_ISERR(err))
		return err;
	if (CFE_ISERR(iocb.status))
		return iocb.status;
	if (retlen)
		*retlen = iocb.buffer.retlen;

	return iocb.status;
}
Пример #4
0
Файл: cfe.c Проект: aircross/ray
int cfe_getfwinfo(struct cfe_fwinfo *info)
{
	struct cfe_iocb iocb;
	int err;

	memset(&iocb, 0, sizeof(iocb));
	iocb.fcode = CFE_CMD_FW_GETINFO;
	iocb.psize = sizeof(struct cfe_iocb_fwinfo);

	err = cfe_iocb_dispatch(&iocb);
	if (CFE_ISERR(err))
		return err;
	if (CFE_ISERR(iocb.status))
		return err;

	info->version = iocb.fwinfo.version;
	info->totalmem = iocb.fwinfo.totalmem;
	info->flags = iocb.fwinfo.flags;
	info->boardid = iocb.fwinfo.boardid;
	info->bootarea_va = iocb.fwinfo.bootarea_va;
	info->bootarea_pa = iocb.fwinfo.bootarea_pa;
	info->bootarea_size = iocb.fwinfo.bootarea_size;

	return iocb.status;
}
Пример #5
0
static int ui_cmd_cpu1(ui_cmdline_t *cmd,int argc,char *argv[])
{
    cfe_iocb_t iocb;
    int res = 0;
    char *a;
    char *x;

    a = cmd_getarg(cmd,0);
    if (!a) a = "";

    iocb.iocb_fcode = CFE_CMD_FW_CPUCTL;
    iocb.iocb_status = 0;
    iocb.iocb_handle = 0;
    iocb.iocb_flags = 0;
    iocb.iocb_psize = sizeof(iocb_cpuctl_t);

    if (strcmp(a,"start") == 0) {
	iocb.plist.iocb_cpuctl.cpu_number = 1;
	iocb.plist.iocb_cpuctl.cpu_command = CFE_CPU_CMD_START;

	if (cmd_sw_value(cmd,"-a1",&x)) iocb.plist.iocb_cpuctl.gp_val = (cfe_uint_t) xtoq(x);
	else iocb.plist.iocb_cpuctl.gp_val = 0xFEEDFACE;

	if (cmd_sw_value(cmd,"-sp",&x)) iocb.plist.iocb_cpuctl.sp_val = (cfe_uint_t) xtoq(x);
	iocb.plist.iocb_cpuctl.sp_val = 0x12345678;

	if (cmd_sw_value(cmd,"-addr",&x)) iocb.plist.iocb_cpuctl.start_addr = (cfe_uint_t) xtoq(x);
	iocb.plist.iocb_cpuctl.start_addr = (cfe_uint_t) cpu1proc;

	xprintf("Starting CPU 1 at %p\n",iocb.plist.iocb_cpuctl.start_addr);
	res = cfe_iocb_dispatch(&iocb);
	}
    else if (strcmp(a,"stop") == 0) {
	iocb.plist.iocb_cpuctl.cpu_number = 1;
	iocb.plist.iocb_cpuctl.cpu_command = CFE_CPU_CMD_STOP;
	iocb.plist.iocb_cpuctl.start_addr = 0;
	xprintf("Stopping CPU 1\n");
	res = cfe_iocb_dispatch(&iocb);
	}
    else {
	xprintf("Invalid CPU1 command: use 'cpu1 stop' or 'cpu1 start'\n");
	return -1;
	}

    printf("Result %d\n",res);
    return res;
}
Пример #6
0
uint64
cfe_getticks(void)
{
	cfe_xiocb_t xiocb(CFE_CMD_FW_GETTIME);

	cfe_iocb_dispatch(&xiocb);

	return xiocb.plist.xiocb_time.ticks;
}
Пример #7
0
int
cfe_close(int handle)
{
	cfe_xiocb_t xiocb(CFE_CMD_DEV_CLOSE, handle);

	cfe_iocb_dispatch(&xiocb);

	return xiocb.xiocb_status;
}
Пример #8
0
int cfe_enumdev(int idx, char *name, int namelen)
{
	cfe_xiocb_t xiocb(CFE_CMD_DEV_ENUM);
	xiocb.plist.xiocb_envbuf.enum_idx = idx;
	xiocb.plist.xiocb_envbuf.name_ptr = (uint64)name;
	xiocb.plist.xiocb_envbuf.name_length = namelen;

	cfe_iocb_dispatch(&xiocb);

	return xiocb.xiocb_status;
}
Пример #9
0
int
cfe_exit(int32 warm, int32 status)
{
	cfe_xiocb_t xiocb(CFE_CMD_FW_RESTART, 0,
		warm ? CFE_FLG_WARMSTART : CFE_FLG_COLDSTART);
	xiocb.plist.xiocb_exitstat.status = status;

	cfe_iocb_dispatch(&xiocb);

	return xiocb.xiocb_status;
}
Пример #10
0
int
cfe_getstdhandle(int flag)
{
	cfe_xiocb_t xiocb(CFE_CMD_DEV_GETHANDLE, 0, flag);

	cfe_iocb_dispatch(&xiocb);

	if (xiocb.xiocb_status < 0);
		return xiocb.xiocb_status;
	return xiocb.xiocb_handle;
}
Пример #11
0
Файл: cfe.c Проект: aircross/ray
int cfe_close(int handle)
{
	struct cfe_iocb iocb;
	int err;

	memset(&iocb, 0, sizeof(iocb));
	iocb.fcode = CFE_CMD_DEV_CLOSE;
	iocb.handle = handle;

	err = cfe_iocb_dispatch(&iocb);

	return (CFE_ISERR(err)) ? err : iocb.status;
}
Пример #12
0
Файл: cfe.c Проект: aircross/ray
int cfe_flushcache(int flags)
{
	struct cfe_iocb iocb;
	int err;

	memset(&iocb, 0, sizeof(iocb));
	iocb.fcode = CFE_CMD_FW_FLUSHCACHE;
	iocb.flags = flags;

	err = cfe_iocb_dispatch(&iocb);

	return (CFE_ISERR(err)) ? err : iocb.status;
}
Пример #13
0
int cfe_flushcache(int flg)
{
    cfe_iocb_t iocb;

    iocb.iocb_fcode = CFE_CMD_FW_FLUSHCACHE;
    iocb.iocb_status = 0;
    iocb.iocb_handle = 0;
    iocb.iocb_flags = flg;
    iocb.iocb_psize = 0;

    cfe_iocb_dispatch(&iocb);

    return iocb.iocb_status;
}
Пример #14
0
int
cfe_open(const char *name)
{
	cfe_xiocb_t xiocb(CFE_CMD_DEV_OPEN);
	xiocb.plist.xiocb_buffer.buf_offset = 0;
	xiocb.plist.xiocb_buffer.buf_ptr = (uint64)name;
	xiocb.plist.xiocb_buffer.buf_length = strlen(name);

	cfe_iocb_dispatch(&xiocb);

	if (xiocb.xiocb_status < 0);
		return xiocb.xiocb_status;
	return xiocb.xiocb_handle;
}
Пример #15
0
int cfe_flushcache(int flg)
{
    struct cfe_xiocb xiocb;

    xiocb.xiocb_fcode = CFE_CMD_FW_FLUSHCACHE;
    xiocb.xiocb_status = 0;
    xiocb.xiocb_handle = 0;
    xiocb.xiocb_flags = flg;
    xiocb.xiocb_psize = 0;

    cfe_iocb_dispatch(&xiocb);

    return xiocb.xiocb_status;
}
Пример #16
0
int
cfe_writeblk(int handle, int64 offset, const void *buffer, int length)
{
	cfe_xiocb_t xiocb(CFE_CMD_DEV_WRITE, handle);
	xiocb.plist.xiocb_buffer.buf_offset = offset;
	xiocb.plist.xiocb_buffer.buf_ptr = (uint64)buffer;
	xiocb.plist.xiocb_buffer.buf_length = length;

	cfe_iocb_dispatch(&xiocb);

	if (xiocb.xiocb_status < 0);
		return xiocb.xiocb_status;
	return xiocb.plist.xiocb_buffer.buf_retlen;
}
Пример #17
0
int cfe_getstdhandle(int flg)
{
	cfe_xiocb_t xiocb;
	
	xiocb.xiocb_fcode = CFE_CMD_DEV_GETHANDLE;
	xiocb.xiocb_status = 0;
	xiocb.xiocb_handle = 0;
	xiocb.xiocb_flags = flg;
	xiocb.xiocb_psize = 0;
	
	cfe_iocb_dispatch(&xiocb);
	
	return (xiocb.xiocb_status < 0) ? xiocb.xiocb_status : xiocb.xiocb_handle;
	
}
Пример #18
0
Файл: cfe.c Проект: aircross/ray
int cfe_cpu_stop(int cpu)
{
	struct cfe_iocb iocb;
	int err;

	memset(&iocb, 0, sizeof(iocb));
	iocb.fcode = CFE_CMD_FW_CPUCTL;
	iocb.psize = sizeof(struct cfe_iocb_cpuctl);
	iocb.cpuctl.number = cpu;
	iocb.cpuctl.command = CFE_CPU_CMD_STOP;

	err = cfe_iocb_dispatch(&iocb);

	return (CFE_ISERR(err)) ? err : iocb.status;
}
Пример #19
0
int cfe_exit(int warm, int status)
{
    struct cfe_xiocb xiocb;

    xiocb.xiocb_fcode = CFE_CMD_FW_RESTART;
    xiocb.xiocb_status = 0;
    xiocb.xiocb_handle = 0;
    xiocb.xiocb_flags = warm ? CFE_FLG_WARMSTART : 0;
    xiocb.xiocb_psize = sizeof(struct xiocb_exitstat);
    xiocb.plist.xiocb_exitstat.status = status;

    cfe_iocb_dispatch(&xiocb);

    return xiocb.xiocb_status;
}
Пример #20
0
int cfe_close(int handle)
{
    struct cfe_xiocb xiocb;

    xiocb.xiocb_fcode = CFE_CMD_DEV_CLOSE;
    xiocb.xiocb_status = 0;
    xiocb.xiocb_handle = handle;
    xiocb.xiocb_flags = 0;
    xiocb.xiocb_psize = 0;

    cfe_iocb_dispatch(&xiocb);

    return xiocb.xiocb_status;

}
Пример #21
0
int cfe_close(int handle)
{
    cfe_iocb_t iocb;

    iocb.iocb_fcode = CFE_CMD_DEV_CLOSE;
    iocb.iocb_status = 0;
    iocb.iocb_handle = handle;
    iocb.iocb_flags = 0;
    iocb.iocb_psize = 0;

    cfe_iocb_dispatch(&iocb);

    return (iocb.iocb_status);

}
Пример #22
0
long long cfe_getticks(void)
{
    cfe_iocb_t iocb;

    iocb.iocb_fcode = CFE_CMD_FW_GETTIME;
    iocb.iocb_status = 0;
    iocb.iocb_handle = 0;
    iocb.iocb_flags = 0;
    iocb.iocb_psize = sizeof(iocb_time_t);
    iocb.plist.iocb_time.ticks = 0;

    cfe_iocb_dispatch(&iocb);

    return iocb.plist.iocb_time.ticks;

}
Пример #23
0
int cfe_getstdhandle(int flg)
{
    struct cfe_xiocb xiocb;

    xiocb.xiocb_fcode = CFE_CMD_DEV_GETHANDLE;
    xiocb.xiocb_status = 0;
    xiocb.xiocb_handle = 0;
    xiocb.xiocb_flags = flg;
    xiocb.xiocb_psize = 0;

    cfe_iocb_dispatch(&xiocb);

    if (xiocb.xiocb_status < 0)
        return xiocb.xiocb_status;
    return xiocb.xiocb_handle;
}
Пример #24
0
int cfe_cpu_stop(int cpu)
{
    struct cfe_xiocb xiocb;

    xiocb.xiocb_fcode = CFE_CMD_FW_CPUCTL;
    xiocb.xiocb_status = 0;
    xiocb.xiocb_handle = 0;
    xiocb.xiocb_flags = 0;
    xiocb.xiocb_psize = sizeof(struct xiocb_cpuctl);
    xiocb.plist.xiocb_cpuctl.cpu_number = cpu;
    xiocb.plist.xiocb_cpuctl.cpu_command = CFE_CPU_CMD_STOP;

    cfe_iocb_dispatch(&xiocb);

    return xiocb.xiocb_status;
}
Пример #25
0
int cfe_exit(int warm,int code)
{
    cfe_iocb_t iocb;

    iocb.iocb_fcode = CFE_CMD_FW_RESTART;
    iocb.iocb_status = 0;
    iocb.iocb_handle = 0;
    iocb.iocb_flags = warm ? CFE_FLG_WARMSTART : 0;
    iocb.iocb_psize = sizeof(iocb_exitstat_t);
    iocb.plist.iocb_exitstat.status = code;

    cfe_iocb_dispatch(&iocb);

    return (iocb.iocb_status);

}
Пример #26
0
long long cfe_getticks(void)
{
	cfe_xiocb_t xiocb;
	
	xiocb.xiocb_fcode = CFE_CMD_FW_GETTIME;
	xiocb.xiocb_status = 0;
	xiocb.xiocb_handle = 0;
	xiocb.xiocb_flags = 0;
	xiocb.xiocb_psize = sizeof(xiocb_time_t);
	xiocb.plist.xiocb_time.ticks = 0;
	
	cfe_iocb_dispatch(&xiocb);
	
	return xiocb.plist.xiocb_time.ticks;
	
}
Пример #27
0
int cfe_writeblk(int handle,cfe_offset_t offset,unsigned char *buffer,int length)
{
    cfe_iocb_t iocb;

    iocb.iocb_fcode = CFE_CMD_DEV_WRITE;
    iocb.iocb_status = 0;
    iocb.iocb_handle = handle;
    iocb.iocb_flags = 0;
    iocb.iocb_psize = sizeof(iocb_buffer_t);
    iocb.plist.iocb_buffer.buf_offset = offset;
    iocb.plist.iocb_buffer.buf_ptr = buffer;
    iocb.plist.iocb_buffer.buf_length = length;

    cfe_iocb_dispatch(&iocb);

    return (iocb.iocb_status < 0) ? iocb.iocb_status : iocb.plist.iocb_buffer.buf_retlen;
}
Пример #28
0
int cfe_getdevinfo(char *name)
{
    cfe_iocb_t iocb;

    iocb.iocb_fcode = CFE_CMD_DEV_GETINFO;
    iocb.iocb_status = 0;
    iocb.iocb_handle = 0;
    iocb.iocb_flags = 0;
    iocb.iocb_psize = sizeof(iocb_buffer_t);
    iocb.plist.iocb_buffer.buf_offset = 0;
    iocb.plist.iocb_buffer.buf_ptr = name;
    iocb.plist.iocb_buffer.buf_length = cfe_strlen(name);

    cfe_iocb_dispatch(&iocb);

    return (iocb.iocb_status < 0) ? iocb.iocb_status : (int)iocb.plist.iocb_buffer.buf_devflags;
}
Пример #29
0
Файл: cfe.c Проект: aircross/ray
int cfe_setenv(char *name, char *val)
{
	struct cfe_iocb iocb;
	int err;

	memset(&iocb, 0, sizeof(iocb));
	iocb.fcode = CFE_CMD_ENV_SET;
	iocb.psize = sizeof(struct cfe_iocb_envbuf);
	iocb.envbuf.name = PTR_TO_CFE(name);
	iocb.envbuf.name_len = strlen(name);
	iocb.envbuf.val = PTR_TO_CFE(val);
	iocb.envbuf.val_len = strlen(val);

	err = cfe_iocb_dispatch(&iocb);

	return (CFE_ISERR(err)) ? err : iocb.status;
}
Пример #30
0
int cfe_open(char *name)
{
    cfe_iocb_t iocb;

    iocb.iocb_fcode = CFE_CMD_DEV_OPEN;
    iocb.iocb_status = 0;
    iocb.iocb_handle = 0;
    iocb.iocb_flags = 0;
    iocb.iocb_psize = sizeof(iocb_buffer_t);
    iocb.plist.iocb_buffer.buf_offset = 0;
    iocb.plist.iocb_buffer.buf_ptr = name;
    iocb.plist.iocb_buffer.buf_length = cfe_strlen(name);

    cfe_iocb_dispatch(&iocb);

    return (iocb.iocb_status < 0) ? iocb.iocb_status : iocb.iocb_handle;
}