kernel: system call handler cleanup

Use new _SYSCALL_OBJ/_SYSCALL_OBJ_INIT macros.

Use new _SYSCALL_MEMORY_READ/_SYSCALL_MEMORY_WRITE macros.

Some non-obvious checks changed to use _SYSCALL_VERIFY_MSG.

Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
This commit is contained in:
Andrew Boie 2017-10-10 12:30:23 -07:00 committed by Andrew Boie
commit 37ff5a9bc5
12 changed files with 58 additions and 55 deletions

View file

@ -97,7 +97,7 @@ u32_t _handler_k_alert_send(u32_t alert, u32_t arg2, u32_t arg3,
{ {
_SYSCALL_ARG1; _SYSCALL_ARG1;
_SYSCALL_IS_OBJ(alert, K_OBJ_ALERT, 0, ssf); _SYSCALL_OBJ(alert, K_OBJ_ALERT, ssf);
_impl_k_alert_send((struct k_alert *)alert); _impl_k_alert_send((struct k_alert *)alert);
return 0; return 0;
@ -115,7 +115,7 @@ u32_t _handler_k_alert_recv(u32_t alert, u32_t timeout, u32_t arg3,
{ {
_SYSCALL_ARG2; _SYSCALL_ARG2;
_SYSCALL_IS_OBJ(alert, K_OBJ_ALERT, 0, ssf); _SYSCALL_OBJ(alert, K_OBJ_ALERT, ssf);
return _impl_k_alert_recv((struct k_alert *)alert, timeout); return _impl_k_alert_recv((struct k_alert *)alert, timeout);
} }
#endif #endif

View file

@ -69,8 +69,8 @@ u32_t _handler_k_msgq_init(u32_t q, u32_t buffer, u32_t msg_size,
{ {
_SYSCALL_ARG4; _SYSCALL_ARG4;
_SYSCALL_IS_OBJ(q, K_OBJ_MSGQ, 1, ssf); _SYSCALL_OBJ_INIT(q, K_OBJ_MSGQ, ssf);
_SYSCALL_MEMORY(buffer, msg_size * max_msgs, 1, ssf); _SYSCALL_MEMORY_WRITE(buffer, msg_size * max_msgs, ssf);
_impl_k_msgq_init((struct k_msgq *)q, (char *)buffer, msg_size, _impl_k_msgq_init((struct k_msgq *)q, (char *)buffer, msg_size,
max_msgs); max_msgs);
@ -133,8 +133,8 @@ u32_t _handler_k_msgq_put(u32_t msgq_p, u32_t data, u32_t timeout,
struct k_msgq *q = (struct k_msgq *)msgq_p; struct k_msgq *q = (struct k_msgq *)msgq_p;
_SYSCALL_ARG3; _SYSCALL_ARG3;
_SYSCALL_IS_OBJ(q, K_OBJ_MSGQ, 0, ssf); _SYSCALL_OBJ(q, K_OBJ_MSGQ, ssf);
_SYSCALL_MEMORY(data, q->msg_size, 0, ssf); _SYSCALL_MEMORY_READ(data, q->msg_size, ssf);
return _impl_k_msgq_put(q, (void *)data, timeout); return _impl_k_msgq_put(q, (void *)data, timeout);
} }
@ -201,8 +201,8 @@ u32_t _handler_k_msgq_get(u32_t msgq_p, u32_t data, u32_t timeout,
struct k_msgq *q = (struct k_msgq *)msgq_p; struct k_msgq *q = (struct k_msgq *)msgq_p;
_SYSCALL_ARG3; _SYSCALL_ARG3;
_SYSCALL_IS_OBJ(q, K_OBJ_MSGQ, 0, ssf); _SYSCALL_OBJ(q, K_OBJ_MSGQ, ssf);
_SYSCALL_MEMORY(data, q->msg_size, 1, ssf); _SYSCALL_MEMORY_WRITE(data, q->msg_size, ssf);
return _impl_k_msgq_get(q, (void *)data, timeout); return _impl_k_msgq_get(q, (void *)data, timeout);
} }
@ -232,7 +232,7 @@ u32_t _handler_k_msgq_purge(u32_t q, u32_t arg2, u32_t arg3,
{ {
_SYSCALL_ARG1; _SYSCALL_ARG1;
_SYSCALL_IS_OBJ(q, K_OBJ_MSGQ, 0, ssf); _SYSCALL_OBJ(q, K_OBJ_MSGQ, ssf);
_impl_k_msgq_purge((struct k_msgq *)q); _impl_k_msgq_purge((struct k_msgq *)q);
return 0; return 0;
@ -243,7 +243,7 @@ u32_t _handler_k_msgq_num_free_get(u32_t q, u32_t arg2, u32_t arg3, u32_t arg4,
{ {
_SYSCALL_ARG1; _SYSCALL_ARG1;
_SYSCALL_IS_OBJ(q, K_OBJ_MSGQ, 0, ssf); _SYSCALL_OBJ(q, K_OBJ_MSGQ, ssf);
return _impl_k_msgq_num_free_get((struct k_msgq *)q); return _impl_k_msgq_num_free_get((struct k_msgq *)q);
} }
@ -253,7 +253,7 @@ u32_t _handler_k_msgq_num_used_get(u32_t q, u32_t arg2, u32_t arg3, u32_t arg4,
{ {
_SYSCALL_ARG1; _SYSCALL_ARG1;
_SYSCALL_IS_OBJ(q, K_OBJ_MSGQ, 0, ssf); _SYSCALL_OBJ(q, K_OBJ_MSGQ, ssf);
return _impl_k_msgq_num_used_get((struct k_msgq *)q); return _impl_k_msgq_num_used_get((struct k_msgq *)q);
} }

View file

@ -87,7 +87,7 @@ u32_t _handler_k_mutex_init(u32_t mutex, u32_t arg2, u32_t arg3,
{ {
_SYSCALL_ARG1; _SYSCALL_ARG1;
_SYSCALL_IS_OBJ(mutex, K_OBJ_MUTEX, 1, ssf); _SYSCALL_OBJ_INIT(mutex, K_OBJ_MUTEX, ssf);
_impl_k_mutex_init((struct k_mutex *)mutex); _impl_k_mutex_init((struct k_mutex *)mutex);
return 0; return 0;
@ -208,7 +208,7 @@ u32_t _handler_k_mutex_lock(u32_t mutex, u32_t timeout, u32_t arg3,
{ {
_SYSCALL_ARG2; _SYSCALL_ARG2;
_SYSCALL_IS_OBJ(mutex, K_OBJ_MUTEX, 0, ssf); _SYSCALL_OBJ(mutex, K_OBJ_MUTEX, ssf);
return _impl_k_mutex_lock((struct k_mutex *)mutex, (s32_t)timeout); return _impl_k_mutex_lock((struct k_mutex *)mutex, (s32_t)timeout);
} }
#endif #endif
@ -272,7 +272,7 @@ u32_t _handler_k_mutex_unlock(u32_t mutex, u32_t arg2, u32_t arg3,
{ {
_SYSCALL_ARG1; _SYSCALL_ARG1;
_SYSCALL_IS_OBJ(mutex, K_OBJ_MUTEX, 0, ssf); _SYSCALL_OBJ(mutex, K_OBJ_MUTEX, ssf);
_impl_k_mutex_unlock((struct k_mutex *)mutex); _impl_k_mutex_unlock((struct k_mutex *)mutex);
return 0; return 0;
} }

View file

@ -146,8 +146,8 @@ u32_t _handler_k_pipe_init(u32_t pipe, u32_t buffer, u32_t size,
{ {
_SYSCALL_ARG3; _SYSCALL_ARG3;
_SYSCALL_IS_OBJ(pipe, K_OBJ_PIPE, 1, ssf); _SYSCALL_OBJ_INIT(pipe, K_OBJ_PIPE, ssf);
_SYSCALL_MEMORY(buffer, size, 1, ssf); _SYSCALL_MEMORY_WRITE(buffer, size, ssf);
_impl_k_pipe_init((struct k_pipe *)pipe, (unsigned char *)buffer, _impl_k_pipe_init((struct k_pipe *)pipe, (unsigned char *)buffer,
size); size);
@ -694,9 +694,9 @@ u32_t _handler_k_pipe_get(u32_t pipe, u32_t data, u32_t bytes_to_read,
size_t *bytes_read = (size_t *)bytes_read_p; size_t *bytes_read = (size_t *)bytes_read_p;
size_t min_xfer = (size_t)min_xfer_p; size_t min_xfer = (size_t)min_xfer_p;
_SYSCALL_IS_OBJ(pipe, K_OBJ_PIPE, 0, ssf); _SYSCALL_OBJ(pipe, K_OBJ_PIPE, ssf);
_SYSCALL_MEMORY(bytes_read, sizeof(*bytes_read), 1, ssf); _SYSCALL_MEMORY_WRITE(bytes_read, sizeof(*bytes_read), ssf);
_SYSCALL_MEMORY((void *)data, bytes_to_read, 1, ssf); _SYSCALL_MEMORY_WRITE((void *)data, bytes_to_read, ssf);
_SYSCALL_VERIFY(min_xfer <= bytes_to_read, ssf); _SYSCALL_VERIFY(min_xfer <= bytes_to_read, ssf);
return _impl_k_pipe_get((struct k_pipe *)pipe, (void *)data, return _impl_k_pipe_get((struct k_pipe *)pipe, (void *)data,
@ -724,9 +724,9 @@ u32_t _handler_k_pipe_put(u32_t pipe, u32_t data, u32_t bytes_to_write,
size_t *bytes_written = (size_t *)bytes_written_p; size_t *bytes_written = (size_t *)bytes_written_p;
size_t min_xfer = (size_t)min_xfer_p; size_t min_xfer = (size_t)min_xfer_p;
_SYSCALL_IS_OBJ(pipe, K_OBJ_PIPE, 0, ssf); _SYSCALL_OBJ(pipe, K_OBJ_PIPE, ssf);
_SYSCALL_MEMORY(bytes_written, sizeof(*bytes_written), 1, ssf); _SYSCALL_MEMORY_WRITE(bytes_written, sizeof(*bytes_written), ssf);
_SYSCALL_MEMORY((void *)data, bytes_to_write, 0, ssf); _SYSCALL_MEMORY_READ((void *)data, bytes_to_write, ssf);
_SYSCALL_VERIFY(min_xfer <= bytes_to_write, ssf); _SYSCALL_VERIFY(min_xfer <= bytes_to_write, ssf);
return _impl_k_pipe_put((struct k_pipe *)pipe, (void *)data, return _impl_k_pipe_put((struct k_pipe *)pipe, (void *)data,

View file

@ -273,7 +273,7 @@ u32_t _handler_k_thread_priority_get(u32_t arg1, u32_t arg2, u32_t arg3,
_SYSCALL_ARG1; _SYSCALL_ARG1;
thread = (struct k_thread *)arg1; thread = (struct k_thread *)arg1;
_SYSCALL_IS_OBJ(thread, K_OBJ_THREAD, 0, ssf); _SYSCALL_OBJ(thread, K_OBJ_THREAD, ssf);
return (u32_t)_impl_k_thread_priority_get(thread); return (u32_t)_impl_k_thread_priority_get(thread);
} }
#endif #endif
@ -301,8 +301,9 @@ u32_t _handler_k_thread_priority_set(u32_t thread, u32_t prio, u32_t arg3,
{ {
_SYSCALL_ARG2; _SYSCALL_ARG2;
_SYSCALL_IS_OBJ(thread, K_OBJ_THREAD, 0, ssf); _SYSCALL_OBJ(thread, K_OBJ_THREAD, ssf);
_SYSCALL_VERIFY(_VALID_PRIO(prio, NULL), ssf); _SYSCALL_VERIFY_MSG(_VALID_PRIO(prio, NULL), ssf,
"invalid thread priority %d", (int)prio);
_impl_k_thread_priority_set((k_tid_t)thread, prio); _impl_k_thread_priority_set((k_tid_t)thread, prio);
return 0; return 0;
} }
@ -399,7 +400,8 @@ u32_t _handler_k_sleep(u32_t arg1, u32_t arg2, u32_t arg3,
{ {
_SYSCALL_ARG1; _SYSCALL_ARG1;
_SYSCALL_VERIFY(arg1 != K_FOREVER, ssf); _SYSCALL_VERIFY_MSG(arg1 != K_FOREVER, ssf,
"sleeping forever not allowed");
_impl_k_sleep(arg1); _impl_k_sleep(arg1);
return 0; return 0;
@ -436,7 +438,7 @@ u32_t _handler_k_wakeup(u32_t thread, u32_t arg2, u32_t arg3,
{ {
_SYSCALL_ARG1; _SYSCALL_ARG1;
_SYSCALL_IS_OBJ(thread, K_OBJ_THREAD, 0, ssf); _SYSCALL_OBJ(thread, K_OBJ_THREAD, ssf);
_impl_k_wakeup((k_tid_t)thread); _impl_k_wakeup((k_tid_t)thread);
return 0; return 0;
} }

View file

@ -76,7 +76,7 @@ u32_t _handler_k_sem_init(u32_t sem_ptr, u32_t initial_count, u32_t limit,
{ {
_SYSCALL_ARG3; _SYSCALL_ARG3;
_SYSCALL_IS_OBJ(sem_ptr, K_OBJ_SEM, 1, ssf); _SYSCALL_OBJ_INIT(sem_ptr, K_OBJ_SEM, ssf);
_SYSCALL_VERIFY(limit != 0, ssf); _SYSCALL_VERIFY(limit != 0, ssf);
_impl_k_sem_init((struct k_sem *)sem_ptr, initial_count, limit); _impl_k_sem_init((struct k_sem *)sem_ptr, initial_count, limit);
return 0; return 0;
@ -161,7 +161,7 @@ u32_t _handler_k_sem_give(u32_t sem_ptr, u32_t arg2, u32_t arg3,
{ {
_SYSCALL_ARG1; _SYSCALL_ARG1;
_SYSCALL_IS_OBJ(sem_ptr, K_OBJ_SEM, 0, ssf); _SYSCALL_OBJ(sem_ptr, K_OBJ_SEM, ssf);
_impl_k_sem_give((struct k_sem *)sem_ptr); _impl_k_sem_give((struct k_sem *)sem_ptr);
return 0; return 0;
@ -196,7 +196,7 @@ u32_t _handler_k_sem_take(u32_t sem_ptr, u32_t timeout, u32_t arg3,
{ {
_SYSCALL_ARG2; _SYSCALL_ARG2;
_SYSCALL_IS_OBJ(sem_ptr, K_OBJ_SEM, 0, ssf); _SYSCALL_OBJ(sem_ptr, K_OBJ_SEM, ssf);
return _impl_k_sem_take((struct k_sem *)sem_ptr, timeout); return _impl_k_sem_take((struct k_sem *)sem_ptr, timeout);
} }
@ -205,7 +205,7 @@ u32_t _handler_k_sem_reset(u32_t sem_ptr, u32_t arg2, u32_t arg3,
{ {
_SYSCALL_ARG1; _SYSCALL_ARG1;
_SYSCALL_IS_OBJ(sem_ptr, K_OBJ_SEM, 0, ssf); _SYSCALL_OBJ(sem_ptr, K_OBJ_SEM, ssf);
_impl_k_sem_reset((struct k_sem *)sem_ptr); _impl_k_sem_reset((struct k_sem *)sem_ptr);
return 0; return 0;
@ -216,7 +216,7 @@ u32_t _handler_k_sem_count_get(u32_t sem_ptr, u32_t arg2, u32_t arg3,
{ {
_SYSCALL_ARG1; _SYSCALL_ARG1;
_SYSCALL_IS_OBJ(sem_ptr, K_OBJ_SEM, 0, ssf); _SYSCALL_OBJ(sem_ptr, K_OBJ_SEM, ssf);
return _impl_k_sem_count_get((struct k_sem *)sem_ptr); return _impl_k_sem_count_get((struct k_sem *)sem_ptr);
} }
#endif /* CONFIG_USERSPACE */ #endif /* CONFIG_USERSPACE */

View file

@ -63,8 +63,8 @@ u32_t _handler_k_stack_init(u32_t stack, u32_t buffer, u32_t num_entries_p,
/* FIXME why is 'num_entries' signed?? */ /* FIXME why is 'num_entries' signed?? */
_SYSCALL_VERIFY(num_entries > 0, ssf); _SYSCALL_VERIFY(num_entries > 0, ssf);
_SYSCALL_IS_OBJ(stack, K_OBJ_STACK, 1, ssf); _SYSCALL_OBJ_INIT(stack, K_OBJ_STACK, ssf);
_SYSCALL_MEMORY(buffer, num_entries * sizeof(u32_t), 1, ssf); _SYSCALL_MEMORY_WRITE(buffer, num_entries * sizeof(u32_t), ssf);
_impl_k_stack_init((struct k_stack *)stack, (u32_t *)buffer, _impl_k_stack_init((struct k_stack *)stack, (u32_t *)buffer,
num_entries); num_entries);
@ -109,8 +109,8 @@ u32_t _handler_k_stack_push(u32_t stack_p, u32_t data, u32_t arg3,
struct k_stack *stack = (struct k_stack *)stack_p; struct k_stack *stack = (struct k_stack *)stack_p;
_SYSCALL_ARG2; _SYSCALL_ARG2;
_SYSCALL_IS_OBJ(stack, K_OBJ_STACK, 0, ssf); _SYSCALL_OBJ(stack, K_OBJ_STACK, ssf);
_SYSCALL_VERIFY(stack->next != stack->top, ssf); _SYSCALL_VERIFY_MSG(stack->next != stack->top, ssf, "stack is full");
_impl_k_stack_push(stack, data); _impl_k_stack_push(stack, data);
return 0; return 0;
@ -151,8 +151,8 @@ u32_t _handler_k_stack_pop(u32_t stack, u32_t data, u32_t timeout,
{ {
_SYSCALL_ARG3; _SYSCALL_ARG3;
_SYSCALL_IS_OBJ(stack, K_OBJ_STACK, 0, ssf); _SYSCALL_OBJ(stack, K_OBJ_STACK, ssf);
_SYSCALL_MEMORY(data, sizeof(u32_t), 1, ssf); _SYSCALL_MEMORY_WRITE(data, sizeof(u32_t), ssf);
return _impl_k_stack_pop((struct k_stack *)stack, (u32_t *)data, return _impl_k_stack_pop((struct k_stack *)stack, (u32_t *)data,
timeout); timeout);

View file

@ -264,7 +264,7 @@ u32_t _handler_k_thread_start(u32_t thread, u32_t arg2, u32_t arg3,
{ {
_SYSCALL_ARG1; _SYSCALL_ARG1;
_SYSCALL_IS_OBJ(thread, K_OBJ_THREAD, 0, ssf); _SYSCALL_OBJ(thread, K_OBJ_THREAD, ssf);
_impl_k_thread_start((struct k_thread *)thread); _impl_k_thread_start((struct k_thread *)thread);
return 0; return 0;
} }
@ -352,7 +352,7 @@ u32_t _handler_k_thread_cancel(u32_t thread, u32_t arg2, u32_t arg3,
{ {
_SYSCALL_ARG1; _SYSCALL_ARG1;
_SYSCALL_IS_OBJ(thread, K_OBJ_THREAD, 0, ssf); _SYSCALL_OBJ(thread, K_OBJ_THREAD, ssf);
return _impl_k_thread_cancel((struct k_thread *)thread); return _impl_k_thread_cancel((struct k_thread *)thread);
} }
#endif #endif
@ -433,7 +433,7 @@ u32_t _handler_k_thread_suspend(u32_t thread, u32_t arg2, u32_t arg3,
{ {
_SYSCALL_ARG1; _SYSCALL_ARG1;
_SYSCALL_IS_OBJ(thread, K_OBJ_THREAD, 0, ssf); _SYSCALL_OBJ(thread, K_OBJ_THREAD, ssf);
_impl_k_thread_suspend((k_tid_t)thread); _impl_k_thread_suspend((k_tid_t)thread);
return 0; return 0;
} }
@ -463,7 +463,7 @@ u32_t _handler_k_thread_resume(u32_t thread, u32_t arg2, u32_t arg3,
{ {
_SYSCALL_ARG1; _SYSCALL_ARG1;
_SYSCALL_IS_OBJ(thread, K_OBJ_THREAD, 0, ssf); _SYSCALL_OBJ(thread, K_OBJ_THREAD, ssf);
_impl_k_thread_resume((k_tid_t)thread); _impl_k_thread_resume((k_tid_t)thread);
return 0; return 0;
} }

View file

@ -51,8 +51,9 @@ u32_t _handler_k_thread_abort(u32_t thread_p, u32_t arg2, u32_t arg3,
u32_t arg4, u32_t arg5, u32_t arg6, void *ssf) u32_t arg4, u32_t arg5, u32_t arg6, void *ssf)
{ {
struct k_thread *thread = (struct k_thread *)thread_p; struct k_thread *thread = (struct k_thread *)thread_p;
_SYSCALL_IS_OBJ(thread, K_OBJ_THREAD, 0, ssf); _SYSCALL_OBJ(thread, K_OBJ_THREAD, ssf);
_SYSCALL_VERIFY(!(thread->base.user_options & K_ESSENTIAL), ssf); _SYSCALL_VERIFY_MSG(!(thread->base.user_options & K_ESSENTIAL), ssf,
"aborting essential thread %p", thread);
_impl_k_thread_abort((struct k_thread *)thread); _impl_k_thread_abort((struct k_thread *)thread);
return 0; return 0;

View file

@ -143,7 +143,7 @@ u32_t _handler_k_timer_start(u32_t timer, u32_t duration_p, u32_t period_p,
_SYSCALL_VERIFY(duration >= 0 && period >= 0 && _SYSCALL_VERIFY(duration >= 0 && period >= 0 &&
(duration != 0 || period != 0), ssf); (duration != 0 || period != 0), ssf);
_SYSCALL_IS_OBJ(timer, K_OBJ_TIMER, 0, ssf); _SYSCALL_OBJ(timer, K_OBJ_TIMER, ssf);
_impl_k_timer_start((struct k_timer *)timer, duration, period); _impl_k_timer_start((struct k_timer *)timer, duration, period);
return 0; return 0;
} }
@ -184,7 +184,7 @@ u32_t _handler_k_timer_stop(u32_t timer, u32_t arg2, u32_t arg3,
{ {
_SYSCALL_ARG1; _SYSCALL_ARG1;
_SYSCALL_IS_OBJ(timer, K_OBJ_TIMER, 0, ssf); _SYSCALL_OBJ(timer, K_OBJ_TIMER, ssf);
_impl_k_timer_stop((struct k_timer *)timer); _impl_k_timer_stop((struct k_timer *)timer);
return 0; return 0;
} }
@ -208,7 +208,7 @@ u32_t _handler_k_timer_status_get(u32_t timer, u32_t arg2, u32_t arg3,
{ {
_SYSCALL_ARG1; _SYSCALL_ARG1;
_SYSCALL_IS_OBJ(timer, K_OBJ_TIMER, 0, ssf); _SYSCALL_OBJ(timer, K_OBJ_TIMER, ssf);
return _impl_k_timer_status_get((struct k_timer *)timer); return _impl_k_timer_status_get((struct k_timer *)timer);
} }
#endif #endif
@ -249,7 +249,7 @@ u32_t _handler_k_timer_status_sync(u32_t timer, u32_t arg2, u32_t arg3,
{ {
_SYSCALL_ARG1; _SYSCALL_ARG1;
_SYSCALL_IS_OBJ(timer, K_OBJ_TIMER, 0, ssf); _SYSCALL_OBJ(timer, K_OBJ_TIMER, ssf);
return _impl_k_timer_status_sync((struct k_timer *)timer); return _impl_k_timer_status_sync((struct k_timer *)timer);
} }
#endif #endif

View file

@ -18,7 +18,7 @@ u32_t _handler_k_object_access_grant(u32_t object, u32_t thread, u32_t arg3,
{ {
_SYSCALL_ARG2; _SYSCALL_ARG2;
_SYSCALL_IS_OBJ(thread, K_OBJ_THREAD, 0, ssf); _SYSCALL_OBJ(thread, K_OBJ_THREAD, ssf);
_impl_k_object_access_grant((void *)object, (struct k_thread *)thread); _impl_k_object_access_grant((void *)object, (struct k_thread *)thread);
return 0; return 0;
} }

View file

@ -12,8 +12,8 @@ u32_t _handler_sensor_attr_set(u32_t dev, u32_t chan, u32_t attr,
{ {
_SYSCALL_ARG4; _SYSCALL_ARG4;
_SYSCALL_IS_OBJ(dev, K_OBJ_DRIVER_SENSOR, 0, ssf); _SYSCALL_OBJ(dev, K_OBJ_DRIVER_SENSOR, ssf);
_SYSCALL_MEMORY(val, sizeof(struct sensor_value), 0, ssf); _SYSCALL_MEMORY_READ(val, sizeof(struct sensor_value), ssf);
return _impl_sensor_attr_set((struct device *)dev, chan, attr, return _impl_sensor_attr_set((struct device *)dev, chan, attr,
(const struct sensor_value *)val); (const struct sensor_value *)val);
} }
@ -24,7 +24,7 @@ u32_t _handler_sensor_sample_fetch(u32_t dev, u32_t arg2, u32_t arg3,
{ {
_SYSCALL_ARG1; _SYSCALL_ARG1;
_SYSCALL_IS_OBJ(dev, K_OBJ_DRIVER_SENSOR, 0, ssf); _SYSCALL_OBJ(dev, K_OBJ_DRIVER_SENSOR, ssf);
return _impl_sensor_sample_fetch((struct device *)dev); return _impl_sensor_sample_fetch((struct device *)dev);
} }
@ -35,7 +35,7 @@ u32_t _handler_sensor_sample_fetch_chan(u32_t dev, u32_t type, u32_t arg3,
{ {
_SYSCALL_ARG2; _SYSCALL_ARG2;
_SYSCALL_IS_OBJ(dev, K_OBJ_DRIVER_SENSOR, 0, ssf); _SYSCALL_OBJ(dev, K_OBJ_DRIVER_SENSOR, ssf);
return _impl_sensor_sample_fetch_chan((struct device *)dev, type); return _impl_sensor_sample_fetch_chan((struct device *)dev, type);
} }
@ -45,8 +45,8 @@ u32_t _handler_sensor_channel_get(u32_t dev, u32_t chan, u32_t val,
{ {
_SYSCALL_ARG3; _SYSCALL_ARG3;
_SYSCALL_IS_OBJ(dev, K_OBJ_DRIVER_SENSOR, 0, ssf); _SYSCALL_OBJ(dev, K_OBJ_DRIVER_SENSOR, ssf);
_SYSCALL_MEMORY(val, sizeof(struct sensor_value), 1, ssf); _SYSCALL_MEMORY_WRITE(val, sizeof(struct sensor_value), ssf);
return _impl_sensor_channel_get((struct device *)dev, chan, return _impl_sensor_channel_get((struct device *)dev, chan,
(struct sensor_value *)val); (struct sensor_value *)val);
} }