82 lines
2.2 KiB
C
82 lines
2.2 KiB
C
/*
|
|
* Copyright 2023 Google LLC
|
|
* Copyright 2023 Microsoft Corporation
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
#include <zephyr/syscall_handler.h>
|
|
#include <zephyr/drivers/fuel_gauge.h>
|
|
|
|
static inline int z_vrfy_fuel_gauge_get_prop(const struct device *dev,
|
|
struct fuel_gauge_property *props,
|
|
size_t props_len)
|
|
{
|
|
struct fuel_gauge_property k_props[props_len];
|
|
|
|
Z_OOPS(Z_SYSCALL_DRIVER_FUEL_GAUGE(dev, get_property));
|
|
|
|
Z_OOPS(z_user_from_copy(k_props, props,
|
|
props_len * sizeof(struct fuel_gauge_property)));
|
|
|
|
int ret = z_impl_fuel_gauge_get_prop(dev, k_props, props_len);
|
|
|
|
Z_OOPS(z_user_to_copy(props, k_props, props_len * sizeof(struct fuel_gauge_property)));
|
|
|
|
return ret;
|
|
}
|
|
|
|
#include <syscalls/fuel_gauge_get_prop_mrsh.c>
|
|
|
|
static inline int z_vrfy_fuel_gauge_set_prop(const struct device *dev,
|
|
struct fuel_gauge_property *props,
|
|
size_t props_len)
|
|
{
|
|
struct fuel_gauge_property k_props[props_len];
|
|
|
|
Z_OOPS(Z_SYSCALL_DRIVER_FUEL_GAUGE(dev, set_property));
|
|
|
|
Z_OOPS(z_user_from_copy(k_props, props,
|
|
props_len * sizeof(struct fuel_gauge_property)));
|
|
|
|
int ret = z_impl_fuel_gauge_set_prop(dev, k_props, props_len);
|
|
|
|
Z_OOPS(z_user_to_copy(props, k_props, props_len * sizeof(struct fuel_gauge_property)));
|
|
|
|
return ret;
|
|
}
|
|
|
|
#include <syscalls/fuel_gauge_set_prop_mrsh.c>
|
|
|
|
static inline int z_vrfy_fuel_gauge_get_buffer_prop(const struct device *dev,
|
|
struct fuel_gauge_buffer_property *prop,
|
|
void *dst, size_t dst_len)
|
|
{
|
|
struct fuel_gauge_buffer_property k_prop;
|
|
|
|
Z_OOPS(Z_SYSCALL_DRIVER_FUEL_GAUGE(dev, get_buffer_property));
|
|
|
|
Z_OOPS(z_user_from_copy(&k_prop, prop,
|
|
sizeof(struct fuel_gauge_buffer_property)));
|
|
|
|
Z_OOPS(Z_SYSCALL_MEMORY_WRITE(dst, dst_len));
|
|
|
|
int ret = z_impl_fuel_gauge_get_buffer_prop(dev, &k_prop, dst, dst_len);
|
|
|
|
Z_OOPS(z_user_to_copy(prop, &k_prop,
|
|
sizeof(struct fuel_gauge_buffer_property)));
|
|
|
|
return ret;
|
|
}
|
|
|
|
#include <syscalls/fuel_gauge_get_buffer_prop_mrsh.c>
|
|
|
|
static inline int z_vrfy_fuel_gauge_battery_cutoff(const struct device *dev)
|
|
{
|
|
Z_OOPS(Z_SYSCALL_DRIVER_FUEL_GAUGE(dev, battery_cutoff));
|
|
|
|
return z_impl_fuel_gauge_battery_cutoff(dev);
|
|
}
|
|
|
|
#include <syscalls/fuel_gauge_battery_cutoff_mrsh.c>
|