Skip to content

Commit 10279eb

Browse files
committed
fix: pikeos sbuf and legacy vm_read/vm_write
1 parent 846dc48 commit 10279eb

1 file changed

Lines changed: 11 additions & 8 deletions

File tree

src/hw_pikeos.c

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -94,11 +94,10 @@ int hw_device_pikeos_open(hw_t *phw, const osal_char_t *devname) {
9494
*tmp = 0;
9595
tmp++;
9696

97-
char *token;
98-
while ((token = strchr(tmp, ':')) != NULL) {
99-
char *act = tmp;
100-
*token = '0';
101-
tmp = token + 1;
97+
char *act = tmp;
98+
do {
99+
char *next = strchr(tmp, ':');
100+
if (next != NULL) { *next = '0'; next++; }
102101

103102
char *value;
104103
if ((value = strchr(act, '=')) != NULL) {
@@ -109,7 +108,9 @@ int hw_device_pikeos_open(hw_t *phw, const osal_char_t *devname) {
109108
phw->use_sbuf = atoi(value) == 0 ? OSAL_FALSE : OSAL_TRUE;
110109
}
111110
}
112-
}
111+
112+
if ((next != NULL) && (*next != '0')) { act = next; } else { break; }
113+
} while (1);
113114
}
114115

115116
local_retval = vm_part_pstat(VM_RESPART_MYSELF, &pinfo);
@@ -128,9 +129,11 @@ int hw_device_pikeos_open(hw_t *phw, const osal_char_t *devname) {
128129
#endif
129130

130131
if (ret == EC_OK) {
131-
local_retval = vm_open(devname, VM_O_RD_WR | VM_O_MAP, &phw->fd);
132+
vm_file_access_mode_t flags = VM_O_RD_WR;
133+
if (phw->use_sbuf) { flags |= VM_O_MAP; }
134+
local_retval = vm_open(devname, flags, &phw->fd);
132135
if (local_retval != P4_E_OK) {
133-
ec_log(1, "HW_OPEN", "vm_open on %s failed\n", devname);
136+
ec_log(1, "HW_OPEN", "vm_open on %s failed: %d\n", devname, local_retval);
134137
ret = EC_ERROR_UNAVAILABLE;
135138
} else {
136139
ec_log(10, "HW_OPEN", "opened %s\n", devname);

0 commit comments

Comments
 (0)