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; }
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; }
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; }
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; }
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; }
uint64 cfe_getticks(void) { cfe_xiocb_t xiocb(CFE_CMD_FW_GETTIME); cfe_iocb_dispatch(&xiocb); return xiocb.plist.xiocb_time.ticks; }
int cfe_close(int handle) { cfe_xiocb_t xiocb(CFE_CMD_DEV_CLOSE, handle); cfe_iocb_dispatch(&xiocb); return xiocb.xiocb_status; }
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; }
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; }
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; }
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; }
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; }
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; }
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; }
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; }
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; }
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; }
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; }
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; }
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; }
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); }
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; }
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; }
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; }
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); }
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; }
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; }
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; }
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; }
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; }