Rizin
unix-like reverse engineering framework and cli tools
qnx.c File Reference
#include "uv.h"
#include "internal.h"
#include <string.h>
#include <sys/process.h>
#include <sys/neutrino.h>
#include <sys/memmsg.h>
#include <sys/syspage.h>
#include <sys/procfs.h>

Go to the source code of this file.

Functions

static void get_mem_info (uint64_t *totalmem, uint64_t *freemem)
 
void uv_loadavg (double avg[3])
 
int uv_exepath (char *buffer, size_t *size)
 
uint64_t uv_get_free_memory (void)
 
uint64_t uv_get_total_memory (void)
 
uint64_t uv_get_constrained_memory (void)
 
int uv_resident_set_memory (size_t *rss)
 
int uv_uptime (double *uptime)
 
int uv_cpu_info (uv_cpu_info_t **cpu_infos, int *count)
 

Function Documentation

◆ get_mem_info()

static void get_mem_info ( uint64_t totalmem,
uint64_t freemem 
)
static

Definition at line 33 of file qnx.c.

33  {
34  mem_info_t msg;
35 
36  memset(&msg, 0, sizeof(msg));
37  msg.i.type = _MEM_INFO;
38  msg.i.fd = -1;
39 
40  if (MsgSend(MEMMGR_COID, &msg.i, sizeof(msg.i), &msg.o, sizeof(msg.o))
41  != -1) {
42  *totalmem = msg.o.info.__posix_tmi_total;
43  *freemem = msg.o.info.posix_tmi_length;
44  } else {
45  *totalmem = 0;
46  *freemem = 0;
47  }
48 }
return memset(p, 0, total)
static struct sockaddr static addrlen static backlog const void msg
Definition: sfsocketcall.h:119

References memset(), and msg.

Referenced by uv_get_free_memory(), and uv_get_total_memory().

◆ uv_cpu_info()

int uv_cpu_info ( uv_cpu_info_t **  cpu_infos,
int count 
)

Definition at line 117 of file qnx.c.

117  {
118  struct cpuinfo_entry* cpuinfo =
119  (struct cpuinfo_entry*)_SYSPAGE_ENTRY(_syspage_ptr, new_cpuinfo);
120  size_t cpuinfo_size = _SYSPAGE_ELEMENT_SIZE(_syspage_ptr, cpuinfo);
121  struct strings_entry* strings = _SYSPAGE_ENTRY(_syspage_ptr, strings);
122  int num_cpus = _syspage_ptr->num_cpu;
123  int i;
124 
125  *count = num_cpus;
126  *cpu_infos = uv__malloc(num_cpus * sizeof(**cpu_infos));
127  if (*cpu_infos == NULL)
128  return UV_ENOMEM;
129 
130  for (i = 0; i < num_cpus; i++) {
131  (*cpu_infos)[i].model = strdup(&strings->data[cpuinfo->name]);
132  (*cpu_infos)[i].speed = cpuinfo->speed;
133  SYSPAGE_ARRAY_ADJ_OFFSET(cpuinfo, cpuinfo, cpuinfo_size);
134  }
135 
136  return 0;
137 }
lzma_index ** i
Definition: index.h:629
#define NULL
Definition: cris-opc.c:27
static static sync static getppid static getegid const char static filename char static len const char char static bufsiz static mask static vfork const void static prot static getpgrp const char static swapflags static arg static fd static protocol static who struct sockaddr static addrlen static backlog struct timeval struct timezone static tz const struct iovec static count static mode const void const struct sockaddr static tolen const char static pathname void count
Definition: sflib.h:98
checking print the parsed form of the magic use in n conjunction with m to debug a new magic file n before installing it n output MIME type strings(--mime-type and\n" " --mime-encoding)\n") OPT('s'
return strdup("=SP r13\n" "=LR r14\n" "=PC r15\n" "=A0 r0\n" "=A1 r1\n" "=A2 r2\n" "=A3 r3\n" "=ZF zf\n" "=SF nf\n" "=OF vf\n" "=CF cf\n" "=SN or0\n" "gpr lr .32 56 0\n" "gpr pc .32 60 0\n" "gpr cpsr .32 64 0 ____tfiae_________________qvczn\n" "gpr or0 .32 68 0\n" "gpr tf .1 64.5 0 thumb\n" "gpr ef .1 64.9 0 endian\n" "gpr jf .1 64.24 0 java\n" "gpr qf .1 64.27 0 sticky_overflow\n" "gpr vf .1 64.28 0 overflow\n" "gpr cf .1 64.29 0 carry\n" "gpr zf .1 64.30 0 zero\n" "gpr nf .1 64.31 0 negative\n" "gpr itc .4 64.10 0 if_then_count\n" "gpr gef .4 64.16 0 great_or_equal\n" "gpr r0 .32 0 0\n" "gpr r1 .32 4 0\n" "gpr r2 .32 8 0\n" "gpr r3 .32 12 0\n" "gpr r4 .32 16 0\n" "gpr r5 .32 20 0\n" "gpr r6 .32 24 0\n" "gpr r7 .32 28 0\n" "gpr r8 .32 32 0\n" "gpr r9 .32 36 0\n" "gpr r10 .32 40 0\n" "gpr r11 .32 44 0\n" "gpr r12 .32 48 0\n" "gpr r13 .32 52 0\n" "gpr r14 .32 56 0\n" "gpr r15 .32 60 0\n" "gpr r16 .32 64 0\n" "gpr r17 .32 68 0\n")
void * uv__malloc(size_t size)
Definition: uv-common.c:75

References count, i, NULL, strdup(), strings(), and uv__malloc().

◆ uv_exepath()

int uv_exepath ( char *  buffer,
size_t size 
)

Definition at line 58 of file qnx.c.

58  {
59  char path[PATH_MAX];
60  if (buffer == NULL || size == NULL || *size == 0)
61  return UV_EINVAL;
62 
63  realpath(_cmdname(NULL), path);
64  strlcpy(buffer, path, *size);
65  *size = strlen(buffer);
66  return 0;
67 }
static static fork const void static count static fd const char const char static newpath const char static path const char path
Definition: sflib.h:35
voidpf void uLong size
Definition: ioapi.h:138
Definition: buffer.h:15

References NULL, and path.

◆ uv_get_constrained_memory()

uint64_t uv_get_constrained_memory ( void  )

Definition at line 86 of file qnx.c.

86  {
87  return 0;
88 }

◆ uv_get_free_memory()

uint64_t uv_get_free_memory ( void  )

Definition at line 70 of file qnx.c.

70  {
71  uint64_t totalmem;
72  uint64_t freemem;
73  get_mem_info(&totalmem, &freemem);
74  return freemem;
75 }
static void get_mem_info(uint64_t *totalmem, uint64_t *freemem)
Definition: qnx.c:33
unsigned long uint64_t
Definition: sftypes.h:28

References get_mem_info().

◆ uv_get_total_memory()

uint64_t uv_get_total_memory ( void  )

Definition at line 78 of file qnx.c.

78  {
79  uint64_t totalmem;
80  uint64_t freemem;
81  get_mem_info(&totalmem, &freemem);
82  return totalmem;
83 }

References get_mem_info().

◆ uv_loadavg()

void uv_loadavg ( double  avg[3])

Definition at line 51 of file qnx.c.

51  {
52  avg[0] = 0.0;
53  avg[1] = 0.0;
54  avg[2] = 0.0;
55 }

◆ uv_resident_set_memory()

int uv_resident_set_memory ( size_t rss)

Definition at line 91 of file qnx.c.

91  {
92  int fd;
93  procfs_asinfo asinfo;
94 
95  fd = uv__open_cloexec("/proc/self/ctl", O_RDONLY);
96  if (fd == -1)
97  return UV__ERR(errno);
98 
99  if (devctl(fd, DCMD_PROC_ASINFO, &asinfo, sizeof(asinfo), 0) == -1) {
100  uv__close(fd);
101  return UV__ERR(errno);
102  }
103 
104  uv__close(fd);
105  *rss = asinfo.rss;
106  return 0;
107 }
#define UV__ERR(x)
Definition: errno.h:29
#define O_RDONLY
Definition: sftypes.h:486
int uv__open_cloexec(const char *path, int flags)
Definition: core.c:1003
int uv__close(int fd)
Definition: core.c:569
static const z80_opcode fd[]
Definition: z80_tab.h:997

References fd, O_RDONLY, uv__close(), UV__ERR, and uv__open_cloexec().

◆ uv_uptime()

int uv_uptime ( double *  uptime)

Definition at line 110 of file qnx.c.

110  {
111  struct qtime_entry* qtime = _SYSPAGE_ENTRY(_syspage_ptr, qtime);
112  *uptime = (qtime->nsec / 1000000000.0);
113  return 0;
114 }