X-Git-Url: http://git.archive.openwrt.org/?a=blobdiff_plain;f=system.c;h=1e31ce6859cd760fb07e43266ab62a1f07db09e8;hb=e0098d49a95d6f33252c9eb2f98e963c3fffe50b;hp=fb7fbe48cbd945f694d373faf6c74f186a67dd69;hpb=c2f1f1908b43f945efc99cb43b49e512ee5d02aa;p=project%2Fprocd.git diff --git a/system.c b/system.c index fb7fbe4..1e31ce6 100644 --- a/system.c +++ b/system.c @@ -13,9 +13,12 @@ */ #include +#ifdef linux #include +#endif #include #include +#include #include #include #include @@ -186,23 +189,27 @@ static int system_info(struct ubus_context *ctx, struct ubus_object *obj, struct ubus_request_data *req, const char *method, struct blob_attr *msg) { - void *c; time_t now; struct tm *tm; +#ifdef linux struct sysinfo info; + void *c; + + if (sysinfo(&info)) + return UBUS_STATUS_UNKNOWN_ERROR; +#endif now = time(NULL); if (!(tm = localtime(&now))) return UBUS_STATUS_UNKNOWN_ERROR; - if (sysinfo(&info)) - return UBUS_STATUS_UNKNOWN_ERROR; - blob_buf_init(&b, 0); + blobmsg_add_u32(&b, "localtime", now + tm->tm_gmtoff); + +#ifdef linux blobmsg_add_u32(&b, "uptime", info.uptime); - blobmsg_add_u32(&b, "localtime", mktime(tm)); c = blobmsg_open_array(&b, "load"); blobmsg_add_u32(&b, NULL, info.loads[0]); @@ -221,6 +228,7 @@ static int system_info(struct ubus_context *ctx, struct ubus_object *obj, blobmsg_add_u64(&b, "total", info.mem_unit * info.totalswap); blobmsg_add_u64(&b, "free", info.mem_unit * info.freeswap); blobmsg_close_table(&b, c); +#endif ubus_send_reply(ctx, req, b.head); @@ -235,6 +243,14 @@ static int system_upgrade(struct ubus_context *ctx, struct ubus_object *obj, return 0; } +static int system_reboot(struct ubus_context *ctx, struct ubus_object *obj, + struct ubus_request_data *req, const char *method, + struct blob_attr *msg) +{ + procd_shutdown(RB_AUTOBOOT); + return 0; +} + enum { WDT_FREQUENCY, WDT_TIMEOUT, @@ -381,6 +397,7 @@ static const struct ubus_method system_methods[] = { UBUS_METHOD_NOARG("board", system_board), UBUS_METHOD_NOARG("info", system_info), UBUS_METHOD_NOARG("upgrade", system_upgrade), + UBUS_METHOD_NOARG("reboot", system_reboot), UBUS_METHOD("watchdog", watchdog_set, watchdog_policy), UBUS_METHOD("signal", proc_signal, signal_policy),