@@ -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