Merge commit 'weigon/lua'
This commit is contained in:
		
						commit
						713e91d59a
					
				@ -1,4 +1,4 @@
 | 
				
			|||||||
SUBDIRS = include src examples tests
 | 
					SUBDIRS = include src bindings examples tests
 | 
				
			||||||
 | 
					
 | 
				
			||||||
EXTRA_DIST=\
 | 
					EXTRA_DIST=\
 | 
				
			||||||
	CMakeLists.txt \
 | 
						CMakeLists.txt \
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										1
									
								
								bindings/Makefile.am
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								bindings/Makefile.am
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					SUBDIRS=lua
 | 
				
			||||||
							
								
								
									
										31
									
								
								bindings/lua/Makefile.am
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								bindings/lua/Makefile.am
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,31 @@
 | 
				
			|||||||
 | 
					INCLUDES=@INCLUDES@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					lib_LTLIBRARIES = sigar.la
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sigar_la_SOURCES  =\
 | 
				
			||||||
 | 
						sigar.c \
 | 
				
			||||||
 | 
						sigar-cpu.c \
 | 
				
			||||||
 | 
						sigar-disk.c \
 | 
				
			||||||
 | 
						sigar-fs.c \
 | 
				
			||||||
 | 
						sigar-mem.c \
 | 
				
			||||||
 | 
						sigar-netif.c \
 | 
				
			||||||
 | 
						sigar-proc.c \
 | 
				
			||||||
 | 
						sigar-swap.c \
 | 
				
			||||||
 | 
						sigar-sysinfo.c \
 | 
				
			||||||
 | 
						sigar-version.c \
 | 
				
			||||||
 | 
						sigar-who.c 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sigar_la_CPPFLAGS = ${LUA_CFLAGS}
 | 
				
			||||||
 | 
					sigar_la_LDFLAGS  = $(AM_LDFLAGS) -module -avoid-version
 | 
				
			||||||
 | 
					sigar_la_LIBADD  = $(top_builddir)/src/libsigar.la
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					noinst_HEADERS = lua-sigar.h
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					TESTS_ENVIRONMENT = \
 | 
				
			||||||
 | 
						LUA_PATH="${srcdir}/?.lua" \
 | 
				
			||||||
 | 
						LUA_CPATH="${builddir}/.libs/?.so" \
 | 
				
			||||||
 | 
						DYLD_LIBRARY_PATH="${top_builddir}/src/.libs/" \
 | 
				
			||||||
 | 
						lua 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					TESTS = \
 | 
				
			||||||
 | 
						sigar-test.lua
 | 
				
			||||||
							
								
								
									
										70
									
								
								bindings/lua/lua-sigar.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								bindings/lua/lua-sigar.h
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,70 @@
 | 
				
			|||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Copyright (c) 2009, Sun Microsystems Inc.
 | 
				
			||||||
 | 
					 * All rights reserved.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Redistribution and use in source and binary forms, with or without modification,
 | 
				
			||||||
 | 
					 * are permitted provided that the following conditions are met:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * - Redistributions of source code must retain the above copyright notice,
 | 
				
			||||||
 | 
					 *   this list of conditions and the following disclaimer.
 | 
				
			||||||
 | 
					 * - Redistributions in binary form must reproduce the above copyright notice,
 | 
				
			||||||
 | 
					 *   this list of conditions and the following disclaimer in the documentation
 | 
				
			||||||
 | 
					 *   and/or other materials provided with the distribution.
 | 
				
			||||||
 | 
					 * - Neither the name of Sun Microsystems Inc. nor the names of its contributors
 | 
				
			||||||
 | 
					 *   may be used to endorse or promote products derived from this software
 | 
				
			||||||
 | 
					 *   without specific prior written permission.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 | 
				
			||||||
 | 
					 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | 
				
			||||||
 | 
					 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | 
				
			||||||
 | 
					 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
 | 
				
			||||||
 | 
					 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 | 
				
			||||||
 | 
					 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 | 
				
			||||||
 | 
					 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
 | 
				
			||||||
 | 
					 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
 | 
				
			||||||
 | 
					 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
 | 
				
			||||||
 | 
					 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
 | 
				
			||||||
 | 
					 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					#ifndef __LUA_SIGAR_H__
 | 
				
			||||||
 | 
					#define __LUA_SIGAR_H__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "sigar.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define LUA_EXPORT_INT(x, y) \
 | 
				
			||||||
 | 
						if (x->y == SIGAR_FIELD_NOTIMPL) { \
 | 
				
			||||||
 | 
							lua_pushnil(L); \
 | 
				
			||||||
 | 
						} else { \
 | 
				
			||||||
 | 
							lua_pushnumber(L, x->y); \
 | 
				
			||||||
 | 
						} \
 | 
				
			||||||
 | 
						lua_setfield(L, -2, #y);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define LUA_EXPORT_DOUBLE(x, y) \
 | 
				
			||||||
 | 
						lua_pushnumber(L, x->y); \
 | 
				
			||||||
 | 
						lua_setfield(L, -2, #y);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define LUA_EXPORT_STR(x, y) \
 | 
				
			||||||
 | 
						lua_pushstring(L, x->y); \
 | 
				
			||||||
 | 
						lua_setfield(L, -2, #y);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define LUA_EXPORT_ADDRESS(x, y) \
 | 
				
			||||||
 | 
						lua_sigar_push_address(L, &(x->y)); \
 | 
				
			||||||
 | 
						lua_setfield(L, -2, #y);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int lua_sigar_cpus_get(lua_State *L);
 | 
				
			||||||
 | 
					int lua_sigar_mem_get(lua_State *L);
 | 
				
			||||||
 | 
					int lua_sigar_swap_get(lua_State *L);
 | 
				
			||||||
 | 
					int lua_sigar_procs_get(lua_State *L);
 | 
				
			||||||
 | 
					int lua_sigar_proc_get(lua_State *L);
 | 
				
			||||||
 | 
					int lua_sigar_pid_get(lua_State *L);
 | 
				
			||||||
 | 
					int lua_sigar_fses_get(lua_State *L);
 | 
				
			||||||
 | 
					int lua_sigar_disk_get(lua_State *L);
 | 
				
			||||||
 | 
					int lua_sigar_disks_get(lua_State *L);
 | 
				
			||||||
 | 
					int lua_sigar_netifs_get(lua_State *L);
 | 
				
			||||||
 | 
					int lua_sigar_who_get(lua_State *L);
 | 
				
			||||||
 | 
					int lua_sigar_version_get(lua_State *L);
 | 
				
			||||||
 | 
					int lua_sigar_sysinfo_get(lua_State *L);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int lua_sigar_push_address(lua_State *L, sigar_net_address_t *addr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
							
								
								
									
										183
									
								
								bindings/lua/sigar-cpu.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										183
									
								
								bindings/lua/sigar-cpu.c
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,183 @@
 | 
				
			|||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Copyright (c) 2009, Sun Microsystems Inc.
 | 
				
			||||||
 | 
					 * All rights reserved.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Redistribution and use in source and binary forms, with or without modification,
 | 
				
			||||||
 | 
					 * are permitted provided that the following conditions are met:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * - Redistributions of source code must retain the above copyright notice,
 | 
				
			||||||
 | 
					 *   this list of conditions and the following disclaimer.
 | 
				
			||||||
 | 
					 * - Redistributions in binary form must reproduce the above copyright notice,
 | 
				
			||||||
 | 
					 *   this list of conditions and the following disclaimer in the documentation
 | 
				
			||||||
 | 
					 *   and/or other materials provided with the distribution.
 | 
				
			||||||
 | 
					 * - Neither the name of Sun Microsystems Inc. nor the names of its contributors
 | 
				
			||||||
 | 
					 *   may be used to endorse or promote products derived from this software
 | 
				
			||||||
 | 
					 *   without specific prior written permission.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 | 
				
			||||||
 | 
					 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | 
				
			||||||
 | 
					 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | 
				
			||||||
 | 
					 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
 | 
				
			||||||
 | 
					 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 | 
				
			||||||
 | 
					 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 | 
				
			||||||
 | 
					 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
 | 
				
			||||||
 | 
					 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
 | 
				
			||||||
 | 
					 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
 | 
				
			||||||
 | 
					 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
 | 
				
			||||||
 | 
					 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					#include <lua.h>
 | 
				
			||||||
 | 
					#include <lauxlib.h>
 | 
				
			||||||
 | 
					#include <lualib.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <string.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "sigar.h"
 | 
				
			||||||
 | 
					#include "lua-sigar.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
						sigar_cpu_list_t      data;
 | 
				
			||||||
 | 
						sigar_cpu_info_list_t info;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						int ref_count;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						sigar_t *sigar;
 | 
				
			||||||
 | 
					} lua_sigar_cpus_t;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
						lua_sigar_cpus_t *cpus;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						int ndx;
 | 
				
			||||||
 | 
					} lua_sigar_cpu_t;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int lua_sigar_cpus_free(lua_State *L, lua_sigar_cpus_t *cpus);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int lua_sigar_cpu_gc(lua_State *L) {
 | 
				
			||||||
 | 
						lua_sigar_cpu_t *cpu = (lua_sigar_cpu_t *)luaL_checkudata(L, 1, "sigar_cpu");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						lua_sigar_cpus_free(L, cpu->cpus);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int lua_sigar_cpu_get_data(lua_State *L) {
 | 
				
			||||||
 | 
						lua_sigar_cpu_t *cpu = (lua_sigar_cpu_t *)luaL_checkudata(L, 1, "sigar_cpu");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						lua_newtable(L);
 | 
				
			||||||
 | 
					#define DATA \
 | 
				
			||||||
 | 
						(&(cpu->cpus->data.data[cpu->ndx]))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, user);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, sys);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, idle);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, nice);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, wait);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, irq);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, soft_irq);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, stolen);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, total);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#undef DATA
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int lua_sigar_cpu_get_info(lua_State *L) {
 | 
				
			||||||
 | 
						lua_sigar_cpu_t *cpu = (lua_sigar_cpu_t *)luaL_checkudata(L, 1, "sigar_cpu");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						lua_newtable(L);
 | 
				
			||||||
 | 
					#define DATA \
 | 
				
			||||||
 | 
						(&(cpu->cpus->info.data[cpu->ndx]))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						LUA_EXPORT_STR(DATA, vendor);
 | 
				
			||||||
 | 
						LUA_EXPORT_STR(DATA, model);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, mhz);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, total_sockets);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, total_cores);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, cores_per_socket);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, cache_size);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#undef DATA
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int lua_sigar_cpus_get_cpu(lua_State *L) {
 | 
				
			||||||
 | 
						lua_sigar_cpus_t *cpus = (lua_sigar_cpus_t *)luaL_checkudata(L, 1, "sigar_cpus");
 | 
				
			||||||
 | 
						lua_sigar_cpu_t *cpu;
 | 
				
			||||||
 | 
						int ndx = luaL_checkint(L, 2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (ndx - 1 < 0 || 
 | 
				
			||||||
 | 
						    ndx - 1 >= cpus->data.number) {
 | 
				
			||||||
 | 
							luaL_error(L, ".cpu[%d] out of range: 1..%d", ndx, cpus->data.number);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						cpu = lua_newuserdata(L, sizeof(lua_sigar_cpu_t));
 | 
				
			||||||
 | 
						cpu->cpus = cpus;
 | 
				
			||||||
 | 
						cpu->ndx = ndx - 1;
 | 
				
			||||||
 | 
						cpus->ref_count++;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (0 != luaL_newmetatable(L, "sigar_cpu")) {
 | 
				
			||||||
 | 
							lua_newtable(L);
 | 
				
			||||||
 | 
							lua_pushcfunction(L, lua_sigar_cpu_get_data);
 | 
				
			||||||
 | 
							lua_setfield(L, -2, "data");
 | 
				
			||||||
 | 
							lua_pushcfunction(L, lua_sigar_cpu_get_info);
 | 
				
			||||||
 | 
							lua_setfield(L, -2, "info");
 | 
				
			||||||
 | 
							lua_setfield(L, -2, "__index");
 | 
				
			||||||
 | 
							lua_pushcfunction(L, lua_sigar_cpu_gc);
 | 
				
			||||||
 | 
							lua_setfield(L, -2, "__gc");
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						lua_setmetatable(L, -2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int lua_sigar_cpus_free(lua_State *L, lua_sigar_cpus_t *cpus) {
 | 
				
			||||||
 | 
						if (--cpus->ref_count == 0) {
 | 
				
			||||||
 | 
							sigar_cpu_list_destroy(cpus->sigar, &(cpus->data));
 | 
				
			||||||
 | 
							sigar_cpu_info_list_destroy(cpus->sigar, &(cpus->info));
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int lua_sigar_cpus_gc(lua_State *L) {
 | 
				
			||||||
 | 
						lua_sigar_cpus_t *cpus = (lua_sigar_cpus_t *)luaL_checkudata(L, 1, "sigar_cpus");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						lua_sigar_cpus_free(L, cpus);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int lua_sigar_cpus_len(lua_State *L) {
 | 
				
			||||||
 | 
						lua_sigar_cpus_t *cpus = (lua_sigar_cpus_t *)luaL_checkudata(L, 1, "sigar_cpus");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						lua_pushinteger(L, cpus->data.number);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int lua_sigar_cpus_get(lua_State *L) {
 | 
				
			||||||
 | 
						sigar_t *s = *(sigar_t **)luaL_checkudata(L, 1, "sigar");
 | 
				
			||||||
 | 
						lua_sigar_cpus_t *cpus;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						cpus = lua_newuserdata(L, sizeof(lua_sigar_cpus_t));
 | 
				
			||||||
 | 
						cpus->sigar = s;
 | 
				
			||||||
 | 
						sigar_cpu_list_get(s, &(cpus->data));
 | 
				
			||||||
 | 
						sigar_cpu_info_list_get(s, &(cpus->info));
 | 
				
			||||||
 | 
						cpus->ref_count = 1;
 | 
				
			||||||
 | 
						if (0 != luaL_newmetatable(L, "sigar_cpus")) {
 | 
				
			||||||
 | 
							lua_pushcfunction(L, lua_sigar_cpus_len);
 | 
				
			||||||
 | 
							lua_setfield(L, -2, "__len");
 | 
				
			||||||
 | 
							lua_pushcfunction(L, lua_sigar_cpus_get_cpu);
 | 
				
			||||||
 | 
							lua_setfield(L, -2, "__index");
 | 
				
			||||||
 | 
							lua_pushcfunction(L, lua_sigar_cpus_gc);
 | 
				
			||||||
 | 
							lua_setfield(L, -2, "__gc");
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						lua_setmetatable(L, -2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										192
									
								
								bindings/lua/sigar-disk.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										192
									
								
								bindings/lua/sigar-disk.c
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,192 @@
 | 
				
			|||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Copyright (c) 2009, Sun Microsystems Inc.
 | 
				
			||||||
 | 
					 * All rights reserved.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Redistribution and use in source and binary forms, with or without modification,
 | 
				
			||||||
 | 
					 * are permitted provided that the following conditions are met:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * - Redistributions of source code must retain the above copyright notice,
 | 
				
			||||||
 | 
					 *   this list of conditions and the following disclaimer.
 | 
				
			||||||
 | 
					 * - Redistributions in binary form must reproduce the above copyright notice,
 | 
				
			||||||
 | 
					 *   this list of conditions and the following disclaimer in the documentation
 | 
				
			||||||
 | 
					 *   and/or other materials provided with the distribution.
 | 
				
			||||||
 | 
					 * - Neither the name of Sun Microsystems Inc. nor the names of its contributors
 | 
				
			||||||
 | 
					 *   may be used to endorse or promote products derived from this software
 | 
				
			||||||
 | 
					 *   without specific prior written permission.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 | 
				
			||||||
 | 
					 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | 
				
			||||||
 | 
					 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | 
				
			||||||
 | 
					 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
 | 
				
			||||||
 | 
					 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 | 
				
			||||||
 | 
					 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 | 
				
			||||||
 | 
					 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
 | 
				
			||||||
 | 
					 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
 | 
				
			||||||
 | 
					 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
 | 
				
			||||||
 | 
					 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
 | 
				
			||||||
 | 
					 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					#include <lua.h>
 | 
				
			||||||
 | 
					#include <lauxlib.h>
 | 
				
			||||||
 | 
					#include <lualib.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <string.h>
 | 
				
			||||||
 | 
					#include <stdlib.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "sigar.h"
 | 
				
			||||||
 | 
					#include "lua-sigar.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* disks */
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
						sigar_file_system_list_t disks;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						sigar_t *sigar;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						int ref_count;
 | 
				
			||||||
 | 
					} lua_sigar_disks_t;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
						char *dev_name;
 | 
				
			||||||
 | 
						sigar_t *sigar;
 | 
				
			||||||
 | 
					} lua_sigar_disk_t;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int lua_sigar_disks_free(lua_State *L, lua_sigar_disks_t *disks) {
 | 
				
			||||||
 | 
						if (--disks->ref_count == 0) {
 | 
				
			||||||
 | 
							sigar_file_system_list_destroy(disks->sigar, &(disks->disks));
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int lua_sigar_disks_gc(lua_State *L) {
 | 
				
			||||||
 | 
						lua_sigar_disks_t *disks = (lua_sigar_disks_t *)luaL_checkudata(L, 1, "sigar_disks");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						lua_sigar_disks_free(L, disks);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int lua_sigar_disks_len(lua_State *L) {
 | 
				
			||||||
 | 
						lua_sigar_disks_t *disks = (lua_sigar_disks_t *)luaL_checkudata(L, 1, "sigar_disks");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						lua_pushinteger(L, disks->disks.number);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int lua_sigar_disk_gc(lua_State *L) {
 | 
				
			||||||
 | 
						lua_sigar_disk_t *disk = (lua_sigar_disk_t *)luaL_checkudata(L, 1, "sigar_disk");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						free(disk->dev_name);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int lua_sigar_disk_get_name(lua_State *L) {
 | 
				
			||||||
 | 
						lua_sigar_disk_t *disk = (lua_sigar_disk_t *)luaL_checkudata(L, 1, "sigar_disk");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						lua_pushstring(L, disk->dev_name);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int lua_sigar_disk_get_usage(lua_State *L) {
 | 
				
			||||||
 | 
						lua_sigar_disk_t *disk = (lua_sigar_disk_t *)luaL_checkudata(L, 1, "sigar_disk");
 | 
				
			||||||
 | 
						sigar_disk_usage_t usage;
 | 
				
			||||||
 | 
						int err;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (SIGAR_OK != (err = sigar_disk_usage_get(disk->sigar, disk->dev_name, &usage))) {
 | 
				
			||||||
 | 
							lua_pushnil(L);
 | 
				
			||||||
 | 
							lua_pushstring(L, strerror(err));
 | 
				
			||||||
 | 
							return 2;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						lua_newtable(L);
 | 
				
			||||||
 | 
					#define DATA \
 | 
				
			||||||
 | 
						(&(usage))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, reads);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, writes);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, read_bytes);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, write_bytes);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, rtime);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, wtime);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, qtime);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, time);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, snaptime);
 | 
				
			||||||
 | 
						LUA_EXPORT_DOUBLE(DATA, service_time);
 | 
				
			||||||
 | 
						LUA_EXPORT_DOUBLE(DATA, queue);
 | 
				
			||||||
 | 
					#undef DATA
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int lua_sigar_disk_set_metatable(lua_State *L, int ndx) {
 | 
				
			||||||
 | 
						if (0 != luaL_newmetatable(L, "sigar_disk")) {
 | 
				
			||||||
 | 
							lua_newtable(L);
 | 
				
			||||||
 | 
							lua_pushcfunction(L, lua_sigar_disk_get_name);
 | 
				
			||||||
 | 
							lua_setfield(L, -2, "name");
 | 
				
			||||||
 | 
							lua_pushcfunction(L, lua_sigar_disk_get_usage);
 | 
				
			||||||
 | 
							lua_setfield(L, -2, "usage");
 | 
				
			||||||
 | 
							lua_setfield(L, -2, "__index");
 | 
				
			||||||
 | 
							lua_pushcfunction(L, lua_sigar_disk_gc);
 | 
				
			||||||
 | 
							lua_setfield(L, -2, "__gc");
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						lua_setmetatable(L, ndx - 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int lua_sigar_disks_get_disk(lua_State *L) {
 | 
				
			||||||
 | 
						lua_sigar_disks_t *disks = (lua_sigar_disks_t *)luaL_checkudata(L, 1, "sigar_disks");
 | 
				
			||||||
 | 
						lua_sigar_disk_t *disk;
 | 
				
			||||||
 | 
						int ndx = luaL_checkint(L, 2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (ndx - 1 < 0 || 
 | 
				
			||||||
 | 
						    ndx - 1 >= disks->disks.number) {
 | 
				
			||||||
 | 
							luaL_error(L, ".disks[%d] out of range: 1..%d", ndx, disks->disks.number);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						disk = lua_newuserdata(L, sizeof(*disk));
 | 
				
			||||||
 | 
						disk->dev_name = strdup(disks->disks.data[ndx - 1].dir_name);
 | 
				
			||||||
 | 
						disk->sigar = disks->sigar;
 | 
				
			||||||
 | 
						lua_sigar_disk_set_metatable(L, -1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int lua_sigar_disk_get(lua_State *L) {
 | 
				
			||||||
 | 
						sigar_t *s = *(sigar_t **)luaL_checkudata(L, 1, "sigar");
 | 
				
			||||||
 | 
						lua_sigar_disk_t *disk;
 | 
				
			||||||
 | 
						const char *key = luaL_checkstring(L, 2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						disk = lua_newuserdata(L, sizeof(*disk));
 | 
				
			||||||
 | 
						disk->dev_name = strdup(key);
 | 
				
			||||||
 | 
						disk->sigar = s;
 | 
				
			||||||
 | 
						lua_sigar_disk_set_metatable(L, -1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int lua_sigar_disks_get(lua_State *L) {
 | 
				
			||||||
 | 
						sigar_t *s = *(sigar_t **)luaL_checkudata(L, 1, "sigar");
 | 
				
			||||||
 | 
						lua_sigar_disks_t *disks;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						disks = lua_newuserdata(L, sizeof(lua_sigar_disks_t));
 | 
				
			||||||
 | 
						disks->sigar = s;
 | 
				
			||||||
 | 
						sigar_file_system_list_get(s, &(disks->disks));
 | 
				
			||||||
 | 
						disks->ref_count = 1;
 | 
				
			||||||
 | 
						if (0 != luaL_newmetatable(L, "sigar_disks")) {
 | 
				
			||||||
 | 
							lua_pushcfunction(L, lua_sigar_disks_len);
 | 
				
			||||||
 | 
							lua_setfield(L, -2, "__len");
 | 
				
			||||||
 | 
							lua_pushcfunction(L, lua_sigar_disks_get_disk);
 | 
				
			||||||
 | 
							lua_setfield(L, -2, "__index");
 | 
				
			||||||
 | 
							lua_pushcfunction(L, lua_sigar_disks_gc);
 | 
				
			||||||
 | 
							lua_setfield(L, -2, "__gc");
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						lua_setmetatable(L, -2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										186
									
								
								bindings/lua/sigar-fs.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										186
									
								
								bindings/lua/sigar-fs.c
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,186 @@
 | 
				
			|||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Copyright (c) 2009, Sun Microsystems Inc.
 | 
				
			||||||
 | 
					 * All rights reserved.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Redistribution and use in source and binary forms, with or without modification,
 | 
				
			||||||
 | 
					 * are permitted provided that the following conditions are met:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * - Redistributions of source code must retain the above copyright notice,
 | 
				
			||||||
 | 
					 *   this list of conditions and the following disclaimer.
 | 
				
			||||||
 | 
					 * - Redistributions in binary form must reproduce the above copyright notice,
 | 
				
			||||||
 | 
					 *   this list of conditions and the following disclaimer in the documentation
 | 
				
			||||||
 | 
					 *   and/or other materials provided with the distribution.
 | 
				
			||||||
 | 
					 * - Neither the name of Sun Microsystems Inc. nor the names of its contributors
 | 
				
			||||||
 | 
					 *   may be used to endorse or promote products derived from this software
 | 
				
			||||||
 | 
					 *   without specific prior written permission.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 | 
				
			||||||
 | 
					 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | 
				
			||||||
 | 
					 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | 
				
			||||||
 | 
					 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
 | 
				
			||||||
 | 
					 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 | 
				
			||||||
 | 
					 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 | 
				
			||||||
 | 
					 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
 | 
				
			||||||
 | 
					 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
 | 
				
			||||||
 | 
					 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
 | 
				
			||||||
 | 
					 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
 | 
				
			||||||
 | 
					 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					#include <lua.h>
 | 
				
			||||||
 | 
					#include <lauxlib.h>
 | 
				
			||||||
 | 
					#include <lualib.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <string.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "sigar.h"
 | 
				
			||||||
 | 
					#include "lua-sigar.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* file-systems */
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
						sigar_file_system_list_t fses;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						sigar_t *sigar;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						int ref_count;
 | 
				
			||||||
 | 
					} lua_sigar_fses_t;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
						lua_sigar_fses_t *fses;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						int ndx;
 | 
				
			||||||
 | 
					} lua_sigar_fs_t;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int lua_sigar_fses_free(lua_State *L, lua_sigar_fses_t *fses) {
 | 
				
			||||||
 | 
						if (--fses->ref_count == 0) {
 | 
				
			||||||
 | 
							sigar_file_system_list_destroy(fses->sigar, &(fses->fses));
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int lua_sigar_fses_gc(lua_State *L) {
 | 
				
			||||||
 | 
						lua_sigar_fses_t *fses = (lua_sigar_fses_t *)luaL_checkudata(L, 1, "sigar_fses");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						lua_sigar_fses_free(L, fses);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int lua_sigar_fses_len(lua_State *L) {
 | 
				
			||||||
 | 
						lua_sigar_fses_t *fses = (lua_sigar_fses_t *)luaL_checkudata(L, 1, "sigar_fses");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						lua_pushinteger(L, fses->fses.number);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int lua_sigar_fs_gc(lua_State *L) {
 | 
				
			||||||
 | 
						lua_sigar_fs_t *fs = (lua_sigar_fs_t *)luaL_checkudata(L, 1, "sigar_fs");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						lua_sigar_fses_free(L, fs->fses);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int lua_sigar_fs_get_info(lua_State *L) {
 | 
				
			||||||
 | 
						lua_sigar_fs_t *fs = (lua_sigar_fs_t *)luaL_checkudata(L, 1, "sigar_fs");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						lua_newtable(L);
 | 
				
			||||||
 | 
					#define DATA \
 | 
				
			||||||
 | 
						(&(fs->fses->fses.data[fs->ndx]))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						LUA_EXPORT_STR(DATA, dir_name);
 | 
				
			||||||
 | 
						LUA_EXPORT_STR(DATA, dev_name);
 | 
				
			||||||
 | 
						LUA_EXPORT_STR(DATA, type_name);
 | 
				
			||||||
 | 
						LUA_EXPORT_STR(DATA, sys_type_name);
 | 
				
			||||||
 | 
						LUA_EXPORT_STR(DATA, options);
 | 
				
			||||||
 | 
					#if 0
 | 
				
			||||||
 | 
						/* valgrind says: Conditional jump or move depends on uninitialised value
 | 
				
			||||||
 | 
						 * looks like sigar isn't initializing it */
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, flags);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#undef DATA
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int lua_sigar_fs_get_usage(lua_State *L) {
 | 
				
			||||||
 | 
						lua_sigar_fs_t *fs = (lua_sigar_fs_t *)luaL_checkudata(L, 1, "sigar_fs");
 | 
				
			||||||
 | 
						const char *dir_name = fs->fses->fses.data[fs->ndx].dir_name;
 | 
				
			||||||
 | 
						sigar_file_system_usage_t usage;
 | 
				
			||||||
 | 
						int err;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (SIGAR_OK != (err = sigar_file_system_usage_get(fs->fses->sigar, dir_name, &usage))) {
 | 
				
			||||||
 | 
							lua_pushnil(L);
 | 
				
			||||||
 | 
							lua_pushstring(L, strerror(err));
 | 
				
			||||||
 | 
							return 2;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						lua_newtable(L);
 | 
				
			||||||
 | 
					#define DATA \
 | 
				
			||||||
 | 
						(&(usage))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, total);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, free);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, used);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, avail);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, files);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, free_files);
 | 
				
			||||||
 | 
					#undef DATA
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int lua_sigar_fses_get_fs(lua_State *L) {
 | 
				
			||||||
 | 
						lua_sigar_fses_t *fses = (lua_sigar_fses_t *)luaL_checkudata(L, 1, "sigar_fses");
 | 
				
			||||||
 | 
						lua_sigar_fs_t *fs;
 | 
				
			||||||
 | 
						int ndx = luaL_checkint(L, 2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (ndx - 1 < 0 || 
 | 
				
			||||||
 | 
						    ndx - 1 >= fses->fses.number) {
 | 
				
			||||||
 | 
							luaL_error(L, ".fses[%d] out of range: 1..%d", ndx, fses->fses.number);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fs = lua_newuserdata(L, sizeof(*fs));
 | 
				
			||||||
 | 
						fs->ndx = ndx - 1;
 | 
				
			||||||
 | 
						fs->fses = fses;
 | 
				
			||||||
 | 
						fses->ref_count++;
 | 
				
			||||||
 | 
						if (0 != luaL_newmetatable(L, "sigar_fs")) {
 | 
				
			||||||
 | 
							lua_newtable(L);
 | 
				
			||||||
 | 
							lua_pushcfunction(L, lua_sigar_fs_get_info);
 | 
				
			||||||
 | 
							lua_setfield(L, -2, "info");
 | 
				
			||||||
 | 
							lua_pushcfunction(L, lua_sigar_fs_get_usage);
 | 
				
			||||||
 | 
							lua_setfield(L, -2, "usage");
 | 
				
			||||||
 | 
							lua_setfield(L, -2, "__index");
 | 
				
			||||||
 | 
							lua_pushcfunction(L, lua_sigar_fs_gc);
 | 
				
			||||||
 | 
							lua_setfield(L, -2, "__gc");
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						lua_setmetatable(L, -2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int lua_sigar_fses_get(lua_State *L) {
 | 
				
			||||||
 | 
						sigar_t *s = *(sigar_t **)luaL_checkudata(L, 1, "sigar");
 | 
				
			||||||
 | 
						lua_sigar_fses_t *fses;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fses = lua_newuserdata(L, sizeof(lua_sigar_fses_t));
 | 
				
			||||||
 | 
						fses->sigar = s;
 | 
				
			||||||
 | 
						sigar_file_system_list_get(s, &(fses->fses));
 | 
				
			||||||
 | 
						fses->ref_count = 1;
 | 
				
			||||||
 | 
						if (0 != luaL_newmetatable(L, "sigar_fses")) {
 | 
				
			||||||
 | 
							lua_pushcfunction(L, lua_sigar_fses_len);
 | 
				
			||||||
 | 
							lua_setfield(L, -2, "__len");
 | 
				
			||||||
 | 
							lua_pushcfunction(L, lua_sigar_fses_get_fs);
 | 
				
			||||||
 | 
							lua_setfield(L, -2, "__index");
 | 
				
			||||||
 | 
							lua_pushcfunction(L, lua_sigar_fses_gc);
 | 
				
			||||||
 | 
							lua_setfield(L, -2, "__gc");
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						lua_setmetatable(L, -2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										62
									
								
								bindings/lua/sigar-mem.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								bindings/lua/sigar-mem.c
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,62 @@
 | 
				
			|||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Copyright (c) 2009, Sun Microsystems Inc.
 | 
				
			||||||
 | 
					 * All rights reserved.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Redistribution and use in source and binary forms, with or without modification,
 | 
				
			||||||
 | 
					 * are permitted provided that the following conditions are met:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * - Redistributions of source code must retain the above copyright notice,
 | 
				
			||||||
 | 
					 *   this list of conditions and the following disclaimer.
 | 
				
			||||||
 | 
					 * - Redistributions in binary form must reproduce the above copyright notice,
 | 
				
			||||||
 | 
					 *   this list of conditions and the following disclaimer in the documentation
 | 
				
			||||||
 | 
					 *   and/or other materials provided with the distribution.
 | 
				
			||||||
 | 
					 * - Neither the name of Sun Microsystems Inc. nor the names of its contributors
 | 
				
			||||||
 | 
					 *   may be used to endorse or promote products derived from this software
 | 
				
			||||||
 | 
					 *   without specific prior written permission.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 | 
				
			||||||
 | 
					 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | 
				
			||||||
 | 
					 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | 
				
			||||||
 | 
					 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
 | 
				
			||||||
 | 
					 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 | 
				
			||||||
 | 
					 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 | 
				
			||||||
 | 
					 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
 | 
				
			||||||
 | 
					 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
 | 
				
			||||||
 | 
					 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
 | 
				
			||||||
 | 
					 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
 | 
				
			||||||
 | 
					 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					#include <lua.h>
 | 
				
			||||||
 | 
					#include <lauxlib.h>
 | 
				
			||||||
 | 
					#include <lualib.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <string.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "sigar.h"
 | 
				
			||||||
 | 
					#include "lua-sigar.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int lua_sigar_mem_get(lua_State *L) {
 | 
				
			||||||
 | 
						sigar_t *s = *(sigar_t **)luaL_checkudata(L, 1, "sigar");
 | 
				
			||||||
 | 
						sigar_mem_t mem;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						sigar_mem_get(s, &mem);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						lua_newtable(L);
 | 
				
			||||||
 | 
					#define DATA \
 | 
				
			||||||
 | 
						(&(mem))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, ram);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, total);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, used);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, free);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, actual_used);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, actual_free);
 | 
				
			||||||
 | 
						LUA_EXPORT_DOUBLE(DATA, used_percent);
 | 
				
			||||||
 | 
						LUA_EXPORT_DOUBLE(DATA, free_percent);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#undef DATA
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										206
									
								
								bindings/lua/sigar-netif.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										206
									
								
								bindings/lua/sigar-netif.c
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,206 @@
 | 
				
			|||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Copyright (c) 2009, Sun Microsystems Inc.
 | 
				
			||||||
 | 
					 * All rights reserved.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Redistribution and use in source and binary forms, with or without modification,
 | 
				
			||||||
 | 
					 * are permitted provided that the following conditions are met:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * - Redistributions of source code must retain the above copyright notice,
 | 
				
			||||||
 | 
					 *   this list of conditions and the following disclaimer.
 | 
				
			||||||
 | 
					 * - Redistributions in binary form must reproduce the above copyright notice,
 | 
				
			||||||
 | 
					 *   this list of conditions and the following disclaimer in the documentation
 | 
				
			||||||
 | 
					 *   and/or other materials provided with the distribution.
 | 
				
			||||||
 | 
					 * - Neither the name of Sun Microsystems Inc. nor the names of its contributors
 | 
				
			||||||
 | 
					 *   may be used to endorse or promote products derived from this software
 | 
				
			||||||
 | 
					 *   without specific prior written permission.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 | 
				
			||||||
 | 
					 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | 
				
			||||||
 | 
					 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | 
				
			||||||
 | 
					 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
 | 
				
			||||||
 | 
					 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 | 
				
			||||||
 | 
					 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 | 
				
			||||||
 | 
					 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
 | 
				
			||||||
 | 
					 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
 | 
				
			||||||
 | 
					 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
 | 
				
			||||||
 | 
					 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
 | 
				
			||||||
 | 
					 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					#include <lua.h>
 | 
				
			||||||
 | 
					#include <lauxlib.h>
 | 
				
			||||||
 | 
					#include <lualib.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <string.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "sigar.h"
 | 
				
			||||||
 | 
					#include "lua-sigar.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* network interfaces */
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
						sigar_net_interface_list_t netifs;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						sigar_t *sigar;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						int ref_count;
 | 
				
			||||||
 | 
					} lua_sigar_netifs_t;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
						lua_sigar_netifs_t *netifs;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						int ndx;
 | 
				
			||||||
 | 
					} lua_sigar_netif_t;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int lua_sigar_netifs_free(lua_State *L, lua_sigar_netifs_t *netifs) {
 | 
				
			||||||
 | 
						if (--netifs->ref_count == 0) {
 | 
				
			||||||
 | 
							sigar_net_interface_list_destroy(netifs->sigar, &(netifs->netifs));
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int lua_sigar_netifs_gc(lua_State *L) {
 | 
				
			||||||
 | 
						lua_sigar_netifs_t *netifs = (lua_sigar_netifs_t *)luaL_checkudata(L, 1, "sigar_netifs");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						lua_sigar_netifs_free(L, netifs);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int lua_sigar_netifs_len(lua_State *L) {
 | 
				
			||||||
 | 
						lua_sigar_netifs_t *netifs = (lua_sigar_netifs_t *)luaL_checkudata(L, 1, "sigar_netifs");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						lua_pushinteger(L, netifs->netifs.number);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int lua_sigar_netif_gc(lua_State *L) {
 | 
				
			||||||
 | 
						lua_sigar_netif_t *netif = (lua_sigar_netif_t *)luaL_checkudata(L, 1, "sigar_netif");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						lua_sigar_netifs_free(L, netif->netifs);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int lua_sigar_netif_get_info(lua_State *L) {
 | 
				
			||||||
 | 
						lua_sigar_netif_t *netif = (lua_sigar_netif_t *)luaL_checkudata(L, 1, "sigar_netif");
 | 
				
			||||||
 | 
						int err;
 | 
				
			||||||
 | 
						const char *if_name = netif->netifs->netifs.data[netif->ndx];
 | 
				
			||||||
 | 
						sigar_net_interface_config_t usage;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (SIGAR_OK != (err = sigar_net_interface_config_get(netif->netifs->sigar, if_name, &usage))) {
 | 
				
			||||||
 | 
							lua_pushnil(L);
 | 
				
			||||||
 | 
							lua_pushstring(L, strerror(err));
 | 
				
			||||||
 | 
							return 2;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						lua_newtable(L);
 | 
				
			||||||
 | 
					#define DATA \
 | 
				
			||||||
 | 
						(&(usage))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						LUA_EXPORT_STR(DATA, name);
 | 
				
			||||||
 | 
						LUA_EXPORT_STR(DATA, type);
 | 
				
			||||||
 | 
						LUA_EXPORT_ADDRESS(DATA, hwaddr);
 | 
				
			||||||
 | 
						LUA_EXPORT_ADDRESS(DATA, address);
 | 
				
			||||||
 | 
						LUA_EXPORT_ADDRESS(DATA, destination);
 | 
				
			||||||
 | 
						LUA_EXPORT_ADDRESS(DATA, broadcast);
 | 
				
			||||||
 | 
						LUA_EXPORT_ADDRESS(DATA, netmask);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, flags);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, mtu);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, metric);
 | 
				
			||||||
 | 
					#undef DATA
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int lua_sigar_netif_get_usage(lua_State *L) {
 | 
				
			||||||
 | 
						lua_sigar_netif_t *netif = (lua_sigar_netif_t *)luaL_checkudata(L, 1, "sigar_netif");
 | 
				
			||||||
 | 
						int err;
 | 
				
			||||||
 | 
						const char *if_name = netif->netifs->netifs.data[netif->ndx];
 | 
				
			||||||
 | 
						sigar_net_interface_stat_t usage;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (SIGAR_OK != (err = sigar_net_interface_stat_get(netif->netifs->sigar, if_name, &usage))) {
 | 
				
			||||||
 | 
							lua_pushnil(L);
 | 
				
			||||||
 | 
							lua_pushstring(L, strerror(err));
 | 
				
			||||||
 | 
							return 2;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						lua_newtable(L);
 | 
				
			||||||
 | 
					#define DATA \
 | 
				
			||||||
 | 
						(&(usage))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, rx_packets);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, rx_bytes);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, rx_errors);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, rx_overruns);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, rx_dropped);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, rx_frame);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, tx_packets);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, tx_bytes);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, tx_errors);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, tx_overruns);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, tx_dropped);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, tx_collisions);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, tx_carrier);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, speed);
 | 
				
			||||||
 | 
					#undef DATA
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int lua_sigar_netifs_get_netif(lua_State *L) {
 | 
				
			||||||
 | 
						lua_sigar_netifs_t *netifs = (lua_sigar_netifs_t *)luaL_checkudata(L, 1, "sigar_netifs");
 | 
				
			||||||
 | 
						lua_sigar_netif_t *netif;
 | 
				
			||||||
 | 
						int ndx = luaL_checkint(L, 2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (ndx - 1 < 0 || 
 | 
				
			||||||
 | 
						    ndx - 1 >= netifs->netifs.number) {
 | 
				
			||||||
 | 
							luaL_error(L, ".netifs[%d] out of range: 1..%d", ndx, netifs->netifs.number);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						netif = lua_newuserdata(L, sizeof(*netif));
 | 
				
			||||||
 | 
						netif->ndx = ndx - 1;
 | 
				
			||||||
 | 
						netif->netifs = netifs;
 | 
				
			||||||
 | 
						netifs->ref_count++;
 | 
				
			||||||
 | 
						if (0 != luaL_newmetatable(L, "sigar_netif")) {
 | 
				
			||||||
 | 
							lua_newtable(L);
 | 
				
			||||||
 | 
							lua_pushcfunction(L, lua_sigar_netif_get_info);
 | 
				
			||||||
 | 
							lua_setfield(L, -2, "info");
 | 
				
			||||||
 | 
							lua_pushcfunction(L, lua_sigar_netif_get_usage);
 | 
				
			||||||
 | 
							lua_setfield(L, -2, "usage");
 | 
				
			||||||
 | 
							lua_setfield(L, -2, "__index");
 | 
				
			||||||
 | 
							lua_pushcfunction(L, lua_sigar_netif_gc);
 | 
				
			||||||
 | 
							lua_setfield(L, -2, "__gc");
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						lua_setmetatable(L, -2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int lua_sigar_netifs_get(lua_State *L) {
 | 
				
			||||||
 | 
						sigar_t *s = *(sigar_t **)luaL_checkudata(L, 1, "sigar");
 | 
				
			||||||
 | 
						lua_sigar_netifs_t *netifs;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						netifs = lua_newuserdata(L, sizeof(lua_sigar_netifs_t));
 | 
				
			||||||
 | 
						netifs->sigar = s;
 | 
				
			||||||
 | 
						sigar_net_interface_list_get(s, &(netifs->netifs));
 | 
				
			||||||
 | 
						netifs->ref_count = 1;
 | 
				
			||||||
 | 
						if (0 != luaL_newmetatable(L, "sigar_netifs")) {
 | 
				
			||||||
 | 
							lua_pushcfunction(L, lua_sigar_netifs_len);
 | 
				
			||||||
 | 
							lua_setfield(L, -2, "__len");
 | 
				
			||||||
 | 
							lua_pushcfunction(L, lua_sigar_netifs_get_netif);
 | 
				
			||||||
 | 
							lua_setfield(L, -2, "__index");
 | 
				
			||||||
 | 
							lua_pushcfunction(L, lua_sigar_netifs_gc);
 | 
				
			||||||
 | 
							lua_setfield(L, -2, "__gc");
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						lua_setmetatable(L, -2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										246
									
								
								bindings/lua/sigar-proc.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										246
									
								
								bindings/lua/sigar-proc.c
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,246 @@
 | 
				
			|||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Copyright (c) 2009, Sun Microsystems Inc.
 | 
				
			||||||
 | 
					 * All rights reserved.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Redistribution and use in source and binary forms, with or without modification,
 | 
				
			||||||
 | 
					 * are permitted provided that the following conditions are met:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * - Redistributions of source code must retain the above copyright notice,
 | 
				
			||||||
 | 
					 *   this list of conditions and the following disclaimer.
 | 
				
			||||||
 | 
					 * - Redistributions in binary form must reproduce the above copyright notice,
 | 
				
			||||||
 | 
					 *   this list of conditions and the following disclaimer in the documentation
 | 
				
			||||||
 | 
					 *   and/or other materials provided with the distribution.
 | 
				
			||||||
 | 
					 * - Neither the name of Sun Microsystems Inc. nor the names of its contributors
 | 
				
			||||||
 | 
					 *   may be used to endorse or promote products derived from this software
 | 
				
			||||||
 | 
					 *   without specific prior written permission.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 | 
				
			||||||
 | 
					 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | 
				
			||||||
 | 
					 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | 
				
			||||||
 | 
					 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
 | 
				
			||||||
 | 
					 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 | 
				
			||||||
 | 
					 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 | 
				
			||||||
 | 
					 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
 | 
				
			||||||
 | 
					 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
 | 
				
			||||||
 | 
					 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
 | 
				
			||||||
 | 
					 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
 | 
				
			||||||
 | 
					 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					#include <lua.h>
 | 
				
			||||||
 | 
					#include <lauxlib.h>
 | 
				
			||||||
 | 
					#include <lualib.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <string.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "sigar.h"
 | 
				
			||||||
 | 
					#include "lua-sigar.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
						sigar_proc_list_t procs;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						sigar_t *sigar;
 | 
				
			||||||
 | 
					} lua_sigar_procs_t;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int lua_sigar_procs_gc(lua_State *L) {
 | 
				
			||||||
 | 
						lua_sigar_procs_t *procs = (lua_sigar_procs_t *)luaL_checkudata(L, 1, "sigar_procs");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						sigar_proc_list_destroy(procs->sigar, &(procs->procs));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int lua_sigar_procs_len(lua_State *L) {
 | 
				
			||||||
 | 
						lua_sigar_procs_t *procs = (lua_sigar_procs_t *)luaL_checkudata(L, 1, "sigar_procs");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						lua_pushinteger(L, procs->procs.number);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int lua_sigar_procs_get_pid(lua_State *L) {
 | 
				
			||||||
 | 
						lua_sigar_procs_t *procs = (lua_sigar_procs_t *)luaL_checkudata(L, 1, "sigar_procs");
 | 
				
			||||||
 | 
						int ndx = luaL_checkint(L, 2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (ndx - 1 < 0 || 
 | 
				
			||||||
 | 
						    ndx - 1 >= procs->procs.number) {
 | 
				
			||||||
 | 
							luaL_error(L, ".procs[%d] out of range: 1..%d", ndx, procs->procs.number);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						lua_pushinteger(L, procs->procs.data[ndx - 1]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int lua_sigar_procs_get(lua_State *L) {
 | 
				
			||||||
 | 
						sigar_t *s = *(sigar_t **)luaL_checkudata(L, 1, "sigar");
 | 
				
			||||||
 | 
						lua_sigar_procs_t *procs;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						procs = lua_newuserdata(L, sizeof(lua_sigar_procs_t));
 | 
				
			||||||
 | 
						procs->sigar = s;
 | 
				
			||||||
 | 
						sigar_proc_list_get(s, &(procs->procs));
 | 
				
			||||||
 | 
						if (0 != luaL_newmetatable(L, "sigar_procs")) {
 | 
				
			||||||
 | 
							lua_pushcfunction(L, lua_sigar_procs_len);
 | 
				
			||||||
 | 
							lua_setfield(L, -2, "__len");
 | 
				
			||||||
 | 
							lua_pushcfunction(L, lua_sigar_procs_get_pid);
 | 
				
			||||||
 | 
							lua_setfield(L, -2, "__index");
 | 
				
			||||||
 | 
							lua_pushcfunction(L, lua_sigar_procs_gc);
 | 
				
			||||||
 | 
							lua_setfield(L, -2, "__gc");
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						lua_setmetatable(L, -2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
						sigar_pid_t pid;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						sigar_t *sigar;
 | 
				
			||||||
 | 
					} lua_sigar_proc_t;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int lua_sigar_proc_gc(lua_State *L) {
 | 
				
			||||||
 | 
						lua_sigar_proc_t *proc = (lua_sigar_proc_t *)luaL_checkudata(L, 1, "sigar_proc");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int lua_sigar_proc_get_mem(lua_State *L) {
 | 
				
			||||||
 | 
						lua_sigar_proc_t *proc = (lua_sigar_proc_t *)luaL_checkudata(L, 1, "sigar_proc");
 | 
				
			||||||
 | 
						sigar_proc_mem_t mem;
 | 
				
			||||||
 | 
						int err;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (SIGAR_OK != (err = sigar_proc_mem_get(proc->sigar, proc->pid, &mem))) {
 | 
				
			||||||
 | 
							lua_pushnil(L);
 | 
				
			||||||
 | 
							lua_pushstring(L, strerror(err));
 | 
				
			||||||
 | 
							return 2;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						lua_newtable(L);
 | 
				
			||||||
 | 
					#define DATA \
 | 
				
			||||||
 | 
						(&(mem))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, size);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, resident);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, share);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, major_faults);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, minor_faults);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, page_faults);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#undef DATA
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int lua_sigar_proc_get_time(lua_State *L) {
 | 
				
			||||||
 | 
						lua_sigar_proc_t *proc = (lua_sigar_proc_t *)luaL_checkudata(L, 1, "sigar_proc");
 | 
				
			||||||
 | 
						sigar_proc_time_t t;
 | 
				
			||||||
 | 
						int err;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (SIGAR_OK != (err = sigar_proc_time_get(proc->sigar, proc->pid, &t))) {
 | 
				
			||||||
 | 
							lua_pushnil(L);
 | 
				
			||||||
 | 
							lua_pushstring(L, strerror(err));
 | 
				
			||||||
 | 
							return 2;
 | 
				
			||||||
 | 
							return 0;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						lua_newtable(L);
 | 
				
			||||||
 | 
					#define DATA \
 | 
				
			||||||
 | 
						(&(t))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, start_time);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, user);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, sys);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, total);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#undef DATA
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int lua_sigar_proc_get_state(lua_State *L) {
 | 
				
			||||||
 | 
						lua_sigar_proc_t *proc = (lua_sigar_proc_t *)luaL_checkudata(L, 1, "sigar_proc");
 | 
				
			||||||
 | 
						sigar_proc_state_t state;
 | 
				
			||||||
 | 
						int err;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (SIGAR_OK != (err = sigar_proc_state_get(proc->sigar, proc->pid, &state))) {
 | 
				
			||||||
 | 
							lua_pushnil(L);
 | 
				
			||||||
 | 
							lua_pushstring(L, strerror(err));
 | 
				
			||||||
 | 
							return 2;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						lua_newtable(L);
 | 
				
			||||||
 | 
					#define DATA \
 | 
				
			||||||
 | 
						(&(state))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						LUA_EXPORT_STR(DATA, name);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, ppid);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, tty);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, priority);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, nice);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, processor);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, threads);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#undef DATA
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int lua_sigar_proc_get_exe(lua_State *L) {
 | 
				
			||||||
 | 
						lua_sigar_proc_t *proc = (lua_sigar_proc_t *)luaL_checkudata(L, 1, "sigar_proc");
 | 
				
			||||||
 | 
						sigar_proc_exe_t t;
 | 
				
			||||||
 | 
						int err;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (SIGAR_OK != (err = sigar_proc_exe_get(proc->sigar, proc->pid, &t))) {
 | 
				
			||||||
 | 
							lua_pushnil(L);
 | 
				
			||||||
 | 
							lua_pushstring(L, strerror(err));
 | 
				
			||||||
 | 
							return 2;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						lua_newtable(L);
 | 
				
			||||||
 | 
					#define DATA \
 | 
				
			||||||
 | 
						(&(t))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						LUA_EXPORT_STR(DATA, name);
 | 
				
			||||||
 | 
						LUA_EXPORT_STR(DATA, cwd);
 | 
				
			||||||
 | 
						LUA_EXPORT_STR(DATA, root);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#undef DATA
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int lua_sigar_proc_get(lua_State *L) {
 | 
				
			||||||
 | 
						sigar_t *s = *(sigar_t **)luaL_checkudata(L, 1, "sigar");
 | 
				
			||||||
 | 
						sigar_pid_t pid = luaL_checknumber(L, 2);
 | 
				
			||||||
 | 
						lua_sigar_proc_t *proc;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						proc = lua_newuserdata(L, sizeof(lua_sigar_proc_t));
 | 
				
			||||||
 | 
						proc->sigar = s;
 | 
				
			||||||
 | 
						proc->pid   = pid;
 | 
				
			||||||
 | 
						if (0 != luaL_newmetatable(L, "sigar_proc")) {
 | 
				
			||||||
 | 
							lua_newtable(L);
 | 
				
			||||||
 | 
							lua_pushcfunction(L, lua_sigar_proc_get_mem);
 | 
				
			||||||
 | 
							lua_setfield(L, -2, "mem");
 | 
				
			||||||
 | 
							lua_pushcfunction(L, lua_sigar_proc_get_time);
 | 
				
			||||||
 | 
							lua_setfield(L, -2, "time");
 | 
				
			||||||
 | 
							lua_pushcfunction(L, lua_sigar_proc_get_exe);
 | 
				
			||||||
 | 
							lua_setfield(L, -2, "exe");
 | 
				
			||||||
 | 
							lua_pushcfunction(L, lua_sigar_proc_get_state);
 | 
				
			||||||
 | 
							lua_setfield(L, -2, "state");
 | 
				
			||||||
 | 
							lua_setfield(L, -2, "__index");
 | 
				
			||||||
 | 
							lua_pushcfunction(L, lua_sigar_proc_gc);
 | 
				
			||||||
 | 
							lua_setfield(L, -2, "__gc");
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						lua_setmetatable(L, -2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int lua_sigar_pid_get(lua_State *L) {
 | 
				
			||||||
 | 
						sigar_t *s = *(sigar_t **)luaL_checkudata(L, 1, "sigar");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						lua_pushnumber(L, sigar_pid_get(s));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										59
									
								
								bindings/lua/sigar-swap.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								bindings/lua/sigar-swap.c
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,59 @@
 | 
				
			|||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Copyright (c) 2009, Sun Microsystems Inc.
 | 
				
			||||||
 | 
					 * All rights reserved.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Redistribution and use in source and binary forms, with or without modification,
 | 
				
			||||||
 | 
					 * are permitted provided that the following conditions are met:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * - Redistributions of source code must retain the above copyright notice,
 | 
				
			||||||
 | 
					 *   this list of conditions and the following disclaimer.
 | 
				
			||||||
 | 
					 * - Redistributions in binary form must reproduce the above copyright notice,
 | 
				
			||||||
 | 
					 *   this list of conditions and the following disclaimer in the documentation
 | 
				
			||||||
 | 
					 *   and/or other materials provided with the distribution.
 | 
				
			||||||
 | 
					 * - Neither the name of Sun Microsystems Inc. nor the names of its contributors
 | 
				
			||||||
 | 
					 *   may be used to endorse or promote products derived from this software
 | 
				
			||||||
 | 
					 *   without specific prior written permission.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 | 
				
			||||||
 | 
					 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | 
				
			||||||
 | 
					 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | 
				
			||||||
 | 
					 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
 | 
				
			||||||
 | 
					 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 | 
				
			||||||
 | 
					 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 | 
				
			||||||
 | 
					 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
 | 
				
			||||||
 | 
					 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
 | 
				
			||||||
 | 
					 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
 | 
				
			||||||
 | 
					 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
 | 
				
			||||||
 | 
					 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					#include <lua.h>
 | 
				
			||||||
 | 
					#include <lauxlib.h>
 | 
				
			||||||
 | 
					#include <lualib.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <string.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "sigar.h"
 | 
				
			||||||
 | 
					#include "lua-sigar.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int lua_sigar_swap_get(lua_State *L) {
 | 
				
			||||||
 | 
						sigar_t *s = *(sigar_t **)luaL_checkudata(L, 1, "sigar");
 | 
				
			||||||
 | 
						sigar_swap_t swap;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						sigar_swap_get(s, &swap);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						lua_newtable(L);
 | 
				
			||||||
 | 
					#define DATA \
 | 
				
			||||||
 | 
						(&(swap))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, total);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, used);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, free);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, page_in);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, page_out);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#undef DATA
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										65
									
								
								bindings/lua/sigar-sysinfo.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								bindings/lua/sigar-sysinfo.c
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,65 @@
 | 
				
			|||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Copyright (c) 2009, Sun Microsystems Inc.
 | 
				
			||||||
 | 
					 * All rights reserved.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Redistribution and use in source and binary forms, with or without modification,
 | 
				
			||||||
 | 
					 * are permitted provided that the following conditions are met:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * - Redistributions of source code must retain the above copyright notice,
 | 
				
			||||||
 | 
					 *   this list of conditions and the following disclaimer.
 | 
				
			||||||
 | 
					 * - Redistributions in binary form must reproduce the above copyright notice,
 | 
				
			||||||
 | 
					 *   this list of conditions and the following disclaimer in the documentation
 | 
				
			||||||
 | 
					 *   and/or other materials provided with the distribution.
 | 
				
			||||||
 | 
					 * - Neither the name of Sun Microsystems Inc. nor the names of its contributors
 | 
				
			||||||
 | 
					 *   may be used to endorse or promote products derived from this software
 | 
				
			||||||
 | 
					 *   without specific prior written permission.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 | 
				
			||||||
 | 
					 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | 
				
			||||||
 | 
					 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | 
				
			||||||
 | 
					 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
 | 
				
			||||||
 | 
					 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 | 
				
			||||||
 | 
					 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 | 
				
			||||||
 | 
					 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
 | 
				
			||||||
 | 
					 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
 | 
				
			||||||
 | 
					 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
 | 
				
			||||||
 | 
					 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
 | 
				
			||||||
 | 
					 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					#include <lua.h>
 | 
				
			||||||
 | 
					#include <lauxlib.h>
 | 
				
			||||||
 | 
					#include <lualib.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <string.h>
 | 
				
			||||||
 | 
					#include <stdlib.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "sigar.h"
 | 
				
			||||||
 | 
					#include "lua-sigar.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int lua_sigar_sysinfo_get(lua_State *L) {
 | 
				
			||||||
 | 
						sigar_t *s = *(sigar_t **)luaL_checkudata(L, 1, "sigar");
 | 
				
			||||||
 | 
						sigar_sys_info_t sysinfo;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						sigar_sys_info_get(s, &sysinfo);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						lua_newtable(L);
 | 
				
			||||||
 | 
					#define DATA \
 | 
				
			||||||
 | 
						(&(sysinfo))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						LUA_EXPORT_STR(DATA, name);
 | 
				
			||||||
 | 
						LUA_EXPORT_STR(DATA, version);
 | 
				
			||||||
 | 
						LUA_EXPORT_STR(DATA, arch);
 | 
				
			||||||
 | 
						LUA_EXPORT_STR(DATA, machine);
 | 
				
			||||||
 | 
						LUA_EXPORT_STR(DATA, description);
 | 
				
			||||||
 | 
						LUA_EXPORT_STR(DATA, patch_level);
 | 
				
			||||||
 | 
						LUA_EXPORT_STR(DATA, vendor);
 | 
				
			||||||
 | 
						LUA_EXPORT_STR(DATA, vendor_version);
 | 
				
			||||||
 | 
						LUA_EXPORT_STR(DATA, vendor_name);
 | 
				
			||||||
 | 
						LUA_EXPORT_STR(DATA, vendor_code_name);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#undef DATA
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										153
									
								
								bindings/lua/sigar-test.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										153
									
								
								bindings/lua/sigar-test.lua
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,153 @@
 | 
				
			|||||||
 | 
					--[[
 | 
				
			||||||
 | 
					-- Copyright (c) 2009, Sun Microsystems Inc.
 | 
				
			||||||
 | 
					-- All rights reserved.
 | 
				
			||||||
 | 
					--
 | 
				
			||||||
 | 
					-- Redistribution and use in source and binary forms, with or without modification,
 | 
				
			||||||
 | 
					-- are permitted provided that the following conditions are met:
 | 
				
			||||||
 | 
					--
 | 
				
			||||||
 | 
					-- * Redistributions of source code must retain the above copyright notice,
 | 
				
			||||||
 | 
					--   this list of conditions and the following disclaimer.
 | 
				
			||||||
 | 
					-- * Redistributions in binary form must reproduce the above copyright notice,
 | 
				
			||||||
 | 
					--   this list of conditions and the following disclaimer in the documentation
 | 
				
			||||||
 | 
					--   and/or other materials provided with the distribution.
 | 
				
			||||||
 | 
					-- * Neither the name of Sun Microsystems Inc. nor the names of its contributors
 | 
				
			||||||
 | 
					--   may be used to endorse or promote products derived from this software
 | 
				
			||||||
 | 
					--   without specific prior written permission.
 | 
				
			||||||
 | 
					--
 | 
				
			||||||
 | 
					-- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 | 
				
			||||||
 | 
					-- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | 
				
			||||||
 | 
					-- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | 
				
			||||||
 | 
					-- ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
 | 
				
			||||||
 | 
					-- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 | 
				
			||||||
 | 
					-- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 | 
				
			||||||
 | 
					-- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
 | 
				
			||||||
 | 
					-- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
 | 
				
			||||||
 | 
					-- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
 | 
				
			||||||
 | 
					-- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
 | 
				
			||||||
 | 
					-- EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
				
			||||||
 | 
					--]]
 | 
				
			||||||
 | 
					local sigar = assert(require("sigar"))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- test if the GC is called nicely
 | 
				
			||||||
 | 
					local s = assert(sigar.new())
 | 
				
			||||||
 | 
					s = nil
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function print_table(t)
 | 
				
			||||||
 | 
						for k, v in pairs(t) do
 | 
				
			||||||
 | 
							print(("  %s: %s"):format(k, v))
 | 
				
			||||||
 | 
						end
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					local s = sigar.new()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					print("-- cpus")
 | 
				
			||||||
 | 
					local cpus = s:cpus()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					for i = 1, #cpus do
 | 
				
			||||||
 | 
						local cpu = cpus[i]
 | 
				
			||||||
 | 
						print(i)
 | 
				
			||||||
 | 
						print(" info")
 | 
				
			||||||
 | 
						local info = cpu:info()
 | 
				
			||||||
 | 
						print_table(info)
 | 
				
			||||||
 | 
						local data = cpu:data()
 | 
				
			||||||
 | 
						print(" data")
 | 
				
			||||||
 | 
						print_table(data)
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					print("-- mem")
 | 
				
			||||||
 | 
					print_table(s:mem())
 | 
				
			||||||
 | 
					print("-- swap")
 | 
				
			||||||
 | 
					print_table(s:swap())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					print("-- procs")
 | 
				
			||||||
 | 
					local procs = s:procs()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					for i = 1, #procs do
 | 
				
			||||||
 | 
						local pid  = procs[i]
 | 
				
			||||||
 | 
						local proc = s:proc(pid) -- get the data ... but don't use it 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if pid == s:pid() then
 | 
				
			||||||
 | 
							print(pid)
 | 
				
			||||||
 | 
							print(" mem")
 | 
				
			||||||
 | 
							local mem, msg = proc:mem()
 | 
				
			||||||
 | 
							if mem then print_table(mem) else print("  -- no mem info: " .. msg) end
 | 
				
			||||||
 | 
							print(" time")
 | 
				
			||||||
 | 
							local t, msg = proc:time()
 | 
				
			||||||
 | 
							if t then print_table(t) else print("  -- no time info: " .. msg) end
 | 
				
			||||||
 | 
							print(" state")
 | 
				
			||||||
 | 
							local t, msg = proc:state()
 | 
				
			||||||
 | 
							if t then print_table(t) else print("  -- no state info: " .. msg) end
 | 
				
			||||||
 | 
							print(" exe")
 | 
				
			||||||
 | 
							local t, msg = proc:exe()
 | 
				
			||||||
 | 
							if t then print_table(t) else print("  -- no exe info: " .. msg) end
 | 
				
			||||||
 | 
						end
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					print("-- filesystems")
 | 
				
			||||||
 | 
					local fses = s:filesystems()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					for i = 1, #fses do
 | 
				
			||||||
 | 
						local fs  = fses[i]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						print(i)
 | 
				
			||||||
 | 
						print(" info")
 | 
				
			||||||
 | 
						local info = fs:info()
 | 
				
			||||||
 | 
						if info then print_table(info) else print("  -- no fs info") end
 | 
				
			||||||
 | 
						print(" usage")
 | 
				
			||||||
 | 
						local usage = fs:usage()
 | 
				
			||||||
 | 
						if usage then print_table(usage) else print("  -- no fs usage") end
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					print("-- disks")
 | 
				
			||||||
 | 
					local disks = s:disks()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					for i = 1, #disks do
 | 
				
			||||||
 | 
						local disk  = disks[i]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						print(" usage")
 | 
				
			||||||
 | 
						local usage, msg = disk:usage()
 | 
				
			||||||
 | 
						if usage then print_table(usage) else print("  -- no disk usage: " .. msg) end
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					---
 | 
				
			||||||
 | 
					-- try to specify a device that is known, but not listed by the fs-list
 | 
				
			||||||
 | 
					local disk = s:disk("/dev/disk1")
 | 
				
			||||||
 | 
					if disk then
 | 
				
			||||||
 | 
						print(disk:name())
 | 
				
			||||||
 | 
						print(" usage")
 | 
				
			||||||
 | 
						local usage, msg = disk:usage()
 | 
				
			||||||
 | 
						if usage then print_table(usage) else print("  -- no disk usage: " .. msg) end
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					print("-- who")
 | 
				
			||||||
 | 
					local who = s:who()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					for i = 1, #who do
 | 
				
			||||||
 | 
						local w  = who[i]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						print(" usage")
 | 
				
			||||||
 | 
						local usage, msg = w
 | 
				
			||||||
 | 
						if usage then print_table(usage) else print("  -- no who usage: " .. msg) end
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					print("-- netifs")
 | 
				
			||||||
 | 
					local netifs = s:netifs()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					for i = 1, #netifs do
 | 
				
			||||||
 | 
						local netif  = netifs[i]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						print(" info")
 | 
				
			||||||
 | 
						local usage, msg = netif:info()
 | 
				
			||||||
 | 
						if usage then print_table(usage) else print("  -- no netif info: " .. msg) end
 | 
				
			||||||
 | 
						print(" usage")
 | 
				
			||||||
 | 
						local usage, msg = netif:usage()
 | 
				
			||||||
 | 
						if usage then print_table(usage) else print("  -- no netif usage: " .. msg) end
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					print("-- version")
 | 
				
			||||||
 | 
					print_table(s:version())
 | 
				
			||||||
 | 
					print("-- sysinfo")
 | 
				
			||||||
 | 
					print_table(s:sysinfo())
 | 
				
			||||||
							
								
								
									
										65
									
								
								bindings/lua/sigar-version.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								bindings/lua/sigar-version.c
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,65 @@
 | 
				
			|||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Copyright (c) 2009, Sun Microsystems Inc.
 | 
				
			||||||
 | 
					 * All rights reserved.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Redistribution and use in source and binary forms, with or without modification,
 | 
				
			||||||
 | 
					 * are permitted provided that the following conditions are met:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * - Redistributions of source code must retain the above copyright notice,
 | 
				
			||||||
 | 
					 *   this list of conditions and the following disclaimer.
 | 
				
			||||||
 | 
					 * - Redistributions in binary form must reproduce the above copyright notice,
 | 
				
			||||||
 | 
					 *   this list of conditions and the following disclaimer in the documentation
 | 
				
			||||||
 | 
					 *   and/or other materials provided with the distribution.
 | 
				
			||||||
 | 
					 * - Neither the name of Sun Microsystems Inc. nor the names of its contributors
 | 
				
			||||||
 | 
					 *   may be used to endorse or promote products derived from this software
 | 
				
			||||||
 | 
					 *   without specific prior written permission.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 | 
				
			||||||
 | 
					 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | 
				
			||||||
 | 
					 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | 
				
			||||||
 | 
					 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
 | 
				
			||||||
 | 
					 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 | 
				
			||||||
 | 
					 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 | 
				
			||||||
 | 
					 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
 | 
				
			||||||
 | 
					 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
 | 
				
			||||||
 | 
					 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
 | 
				
			||||||
 | 
					 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
 | 
				
			||||||
 | 
					 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					#include <lua.h>
 | 
				
			||||||
 | 
					#include <lauxlib.h>
 | 
				
			||||||
 | 
					#include <lualib.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <string.h>
 | 
				
			||||||
 | 
					#include <stdlib.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "sigar.h"
 | 
				
			||||||
 | 
					#include "lua-sigar.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int lua_sigar_version_get(lua_State *L) {
 | 
				
			||||||
 | 
						sigar_t *s = *(sigar_t **)luaL_checkudata(L, 1, "sigar");
 | 
				
			||||||
 | 
						sigar_version_t *version;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						version = sigar_version_get();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						lua_newtable(L);
 | 
				
			||||||
 | 
					#define DATA \
 | 
				
			||||||
 | 
						(version)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						LUA_EXPORT_STR(DATA, build_date);
 | 
				
			||||||
 | 
						LUA_EXPORT_STR(DATA, scm_revision);
 | 
				
			||||||
 | 
						LUA_EXPORT_STR(DATA, version);
 | 
				
			||||||
 | 
						LUA_EXPORT_STR(DATA, archname);
 | 
				
			||||||
 | 
						LUA_EXPORT_STR(DATA, archlib);
 | 
				
			||||||
 | 
						LUA_EXPORT_STR(DATA, binname);
 | 
				
			||||||
 | 
						LUA_EXPORT_STR(DATA, description);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, major);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, minor);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, maint);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, build);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#undef DATA
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										103
									
								
								bindings/lua/sigar-who.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										103
									
								
								bindings/lua/sigar-who.c
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,103 @@
 | 
				
			|||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Copyright (c) 2009, Sun Microsystems Inc.
 | 
				
			||||||
 | 
					 * All rights reserved.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Redistribution and use in source and binary forms, with or without modification,
 | 
				
			||||||
 | 
					 * are permitted provided that the following conditions are met:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * - Redistributions of source code must retain the above copyright notice,
 | 
				
			||||||
 | 
					 *   this list of conditions and the following disclaimer.
 | 
				
			||||||
 | 
					 * - Redistributions in binary form must reproduce the above copyright notice,
 | 
				
			||||||
 | 
					 *   this list of conditions and the following disclaimer in the documentation
 | 
				
			||||||
 | 
					 *   and/or other materials provided with the distribution.
 | 
				
			||||||
 | 
					 * - Neither the name of Sun Microsystems Inc. nor the names of its contributors
 | 
				
			||||||
 | 
					 *   may be used to endorse or promote products derived from this software
 | 
				
			||||||
 | 
					 *   without specific prior written permission.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 | 
				
			||||||
 | 
					 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | 
				
			||||||
 | 
					 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | 
				
			||||||
 | 
					 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
 | 
				
			||||||
 | 
					 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 | 
				
			||||||
 | 
					 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 | 
				
			||||||
 | 
					 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
 | 
				
			||||||
 | 
					 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
 | 
				
			||||||
 | 
					 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
 | 
				
			||||||
 | 
					 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
 | 
				
			||||||
 | 
					 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					#include <lua.h>
 | 
				
			||||||
 | 
					#include <lauxlib.h>
 | 
				
			||||||
 | 
					#include <lualib.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <string.h>
 | 
				
			||||||
 | 
					#include <stdlib.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "sigar.h"
 | 
				
			||||||
 | 
					#include "lua-sigar.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
						sigar_who_list_t who;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						sigar_t *sigar;
 | 
				
			||||||
 | 
					} lua_sigar_who_t;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int lua_sigar_who_gc(lua_State *L) {
 | 
				
			||||||
 | 
						lua_sigar_who_t *who = (lua_sigar_who_t *)luaL_checkudata(L, 1, "sigar_who");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						sigar_who_list_destroy(who->sigar, &(who->who));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int lua_sigar_who_len(lua_State *L) {
 | 
				
			||||||
 | 
						lua_sigar_who_t *who = (lua_sigar_who_t *)luaL_checkudata(L, 1, "sigar_who");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						lua_pushinteger(L, who->who.number);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int lua_sigar_who_get_who(lua_State *L) {
 | 
				
			||||||
 | 
						lua_sigar_who_t *who = (lua_sigar_who_t *)luaL_checkudata(L, 1, "sigar_who");
 | 
				
			||||||
 | 
						int ndx = luaL_checkint(L, 2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (ndx - 1 < 0 || 
 | 
				
			||||||
 | 
						    ndx - 1 >= who->who.number) {
 | 
				
			||||||
 | 
							luaL_error(L, ".who[%d] out of range: 1..%d", ndx, who->who.number);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						lua_newtable(L);
 | 
				
			||||||
 | 
					#define DATA \
 | 
				
			||||||
 | 
						(&(who->who.data[ndx - 1]))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						LUA_EXPORT_STR(DATA, user);
 | 
				
			||||||
 | 
						LUA_EXPORT_STR(DATA, device);
 | 
				
			||||||
 | 
						LUA_EXPORT_STR(DATA, host);
 | 
				
			||||||
 | 
						LUA_EXPORT_INT(DATA, time);
 | 
				
			||||||
 | 
					#undef DATA
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int lua_sigar_who_get(lua_State *L) {
 | 
				
			||||||
 | 
						sigar_t *s = *(sigar_t **)luaL_checkudata(L, 1, "sigar");
 | 
				
			||||||
 | 
						lua_sigar_who_t *who;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						who = lua_newuserdata(L, sizeof(lua_sigar_who_t));
 | 
				
			||||||
 | 
						who->sigar = s;
 | 
				
			||||||
 | 
						sigar_who_list_get(s, &(who->who));
 | 
				
			||||||
 | 
						if (0 != luaL_newmetatable(L, "sigar_who")) {
 | 
				
			||||||
 | 
							lua_pushcfunction(L, lua_sigar_who_len);
 | 
				
			||||||
 | 
							lua_setfield(L, -2, "__len");
 | 
				
			||||||
 | 
							lua_pushcfunction(L, lua_sigar_who_get_who);
 | 
				
			||||||
 | 
							lua_setfield(L, -2, "__index");
 | 
				
			||||||
 | 
							lua_pushcfunction(L, lua_sigar_who_gc);
 | 
				
			||||||
 | 
							lua_setfield(L, -2, "__gc");
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						lua_setmetatable(L, -2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										185
									
								
								bindings/lua/sigar.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										185
									
								
								bindings/lua/sigar.c
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,185 @@
 | 
				
			|||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Copyright (c) 2009, Sun Microsystems Inc.
 | 
				
			||||||
 | 
					 * All rights reserved.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Redistribution and use in source and binary forms, with or without modification,
 | 
				
			||||||
 | 
					 * are permitted provided that the following conditions are met:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * - Redistributions of source code must retain the above copyright notice,
 | 
				
			||||||
 | 
					 *   this list of conditions and the following disclaimer.
 | 
				
			||||||
 | 
					 * - Redistributions in binary form must reproduce the above copyright notice,
 | 
				
			||||||
 | 
					 *   this list of conditions and the following disclaimer in the documentation
 | 
				
			||||||
 | 
					 *   and/or other materials provided with the distribution.
 | 
				
			||||||
 | 
					 * - Neither the name of Sun Microsystems Inc. nor the names of its contributors
 | 
				
			||||||
 | 
					 *   may be used to endorse or promote products derived from this software
 | 
				
			||||||
 | 
					 *   without specific prior written permission.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 | 
				
			||||||
 | 
					 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | 
				
			||||||
 | 
					 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | 
				
			||||||
 | 
					 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
 | 
				
			||||||
 | 
					 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 | 
				
			||||||
 | 
					 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 | 
				
			||||||
 | 
					 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
 | 
				
			||||||
 | 
					 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
 | 
				
			||||||
 | 
					 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
 | 
				
			||||||
 | 
					 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
 | 
				
			||||||
 | 
					 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					#include <lua.h>
 | 
				
			||||||
 | 
					#include <lauxlib.h>
 | 
				
			||||||
 | 
					#include <lualib.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <string.h>
 | 
				
			||||||
 | 
					#include <stdlib.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "sigar.h"
 | 
				
			||||||
 | 
					#include "lua-sigar.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * push the converted sigar_net_address_t as string on the stack
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					int lua_sigar_push_address(lua_State *L, sigar_net_address_t *addr) {
 | 
				
			||||||
 | 
						char s[24 + 1]; /* AF_LINK  is 2 * 8 + 7 colons = 23
 | 
				
			||||||
 | 
								   AF_INET6 is 4 * 4 + 3 colons = 17
 | 
				
			||||||
 | 
								   AF_INET  is 4 * 3 + 3 dots = 15
 | 
				
			||||||
 | 
								   */
 | 
				
			||||||
 | 
						size_t s_have = sizeof(s) - 1;
 | 
				
			||||||
 | 
						size_t s_need;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						switch (addr->family) {
 | 
				
			||||||
 | 
						case SIGAR_AF_UNSPEC:
 | 
				
			||||||
 | 
							lua_pushnil(L);
 | 
				
			||||||
 | 
							return 1;
 | 
				
			||||||
 | 
						case SIGAR_AF_INET:
 | 
				
			||||||
 | 
							lua_pushfstring(L, "%d.%d.%d.%d",
 | 
				
			||||||
 | 
									(addr->addr.in >> 0) & 0xff,
 | 
				
			||||||
 | 
									(addr->addr.in >> 8) & 0xff,
 | 
				
			||||||
 | 
									(addr->addr.in >> 16) & 0xff,
 | 
				
			||||||
 | 
									(addr->addr.in >> 24) & 0xff);
 | 
				
			||||||
 | 
							return 1;
 | 
				
			||||||
 | 
						case SIGAR_AF_INET6:
 | 
				
			||||||
 | 
							s_need = snprintf(s, s_have, "%4x:%4x:%4x:%4x",
 | 
				
			||||||
 | 
									(addr->addr.in6[0]),
 | 
				
			||||||
 | 
									(addr->addr.in6[1]),
 | 
				
			||||||
 | 
									(addr->addr.in6[2]),
 | 
				
			||||||
 | 
									(addr->addr.in6[3]));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if (s_need > s_have) {
 | 
				
			||||||
 | 
								/* string is truncated, but written to s */
 | 
				
			||||||
 | 
								luaL_error(L, "can't convert INET6 address string, not enough memory: %d need, %d available",
 | 
				
			||||||
 | 
										s_need, s_have);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							lua_pushstring(L, s);
 | 
				
			||||||
 | 
							return 1;
 | 
				
			||||||
 | 
						case SIGAR_AF_LINK:
 | 
				
			||||||
 | 
							s_need = snprintf(s, s_have, "%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x",
 | 
				
			||||||
 | 
									addr->addr.mac[0],
 | 
				
			||||||
 | 
									addr->addr.mac[1],
 | 
				
			||||||
 | 
									addr->addr.mac[2],
 | 
				
			||||||
 | 
									addr->addr.mac[3],
 | 
				
			||||||
 | 
									addr->addr.mac[4],
 | 
				
			||||||
 | 
									addr->addr.mac[5],
 | 
				
			||||||
 | 
									addr->addr.mac[6],
 | 
				
			||||||
 | 
									addr->addr.mac[7]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if (s_need > s_have) {
 | 
				
			||||||
 | 
								/* string is truncated, but written to s */
 | 
				
			||||||
 | 
								luaL_error(L, "can't convert MAC address string, not enough memory: %d need, %d available",
 | 
				
			||||||
 | 
										s_need, s_have);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							lua_pushstring(L, s);
 | 
				
			||||||
 | 
							return 1;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int lua_sigar_free(lua_State *L) {
 | 
				
			||||||
 | 
						sigar_t *s = *(sigar_t **)luaL_checkudata(L, 1, "sigar");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						sigar_close(s);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int lua_sigar_new(lua_State *L) {
 | 
				
			||||||
 | 
						sigar_t **_s;
 | 
				
			||||||
 | 
						sigar_t *s;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (SIGAR_OK != sigar_open(&s)) {
 | 
				
			||||||
 | 
							luaL_error(L, "sigar_open() failed");
 | 
				
			||||||
 | 
							return 0;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_s = lua_newuserdata(L, sizeof(sigar_t *));
 | 
				
			||||||
 | 
						*_s = s;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (0 != luaL_newmetatable(L, "sigar")) {
 | 
				
			||||||
 | 
							lua_newtable(L);
 | 
				
			||||||
 | 
							lua_pushcfunction(L, lua_sigar_cpus_get);
 | 
				
			||||||
 | 
							lua_setfield(L, -2, "cpus");
 | 
				
			||||||
 | 
							lua_pushcfunction(L, lua_sigar_procs_get);
 | 
				
			||||||
 | 
							lua_setfield(L, -2, "procs");
 | 
				
			||||||
 | 
							lua_pushcfunction(L, lua_sigar_fses_get);
 | 
				
			||||||
 | 
							lua_setfield(L, -2, "filesystems");
 | 
				
			||||||
 | 
							lua_pushcfunction(L, lua_sigar_disks_get);
 | 
				
			||||||
 | 
							lua_setfield(L, -2, "disks");
 | 
				
			||||||
 | 
							lua_pushcfunction(L, lua_sigar_disk_get);
 | 
				
			||||||
 | 
							lua_setfield(L, -2, "disk");
 | 
				
			||||||
 | 
							lua_pushcfunction(L, lua_sigar_who_get);
 | 
				
			||||||
 | 
							lua_setfield(L, -2, "who");
 | 
				
			||||||
 | 
							lua_pushcfunction(L, lua_sigar_netifs_get);
 | 
				
			||||||
 | 
							lua_setfield(L, -2, "netifs");
 | 
				
			||||||
 | 
							lua_pushcfunction(L, lua_sigar_proc_get);
 | 
				
			||||||
 | 
							lua_setfield(L, -2, "proc");
 | 
				
			||||||
 | 
							lua_pushcfunction(L, lua_sigar_pid_get);
 | 
				
			||||||
 | 
							lua_setfield(L, -2, "pid");
 | 
				
			||||||
 | 
							lua_pushcfunction(L, lua_sigar_mem_get);
 | 
				
			||||||
 | 
							lua_setfield(L, -2, "mem");
 | 
				
			||||||
 | 
							lua_pushcfunction(L, lua_sigar_swap_get);
 | 
				
			||||||
 | 
							lua_setfield(L, -2, "swap");
 | 
				
			||||||
 | 
							lua_pushcfunction(L, lua_sigar_version_get);
 | 
				
			||||||
 | 
							lua_setfield(L, -2, "version");
 | 
				
			||||||
 | 
							lua_pushcfunction(L, lua_sigar_sysinfo_get);
 | 
				
			||||||
 | 
							lua_setfield(L, -2, "sysinfo");
 | 
				
			||||||
 | 
							lua_setfield(L, -2, "__index");
 | 
				
			||||||
 | 
							lua_pushcfunction(L, lua_sigar_free);
 | 
				
			||||||
 | 
							lua_setfield(L, -2, "__gc");
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						lua_setmetatable(L, -2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					** Assumes the table is on top of the stack.
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					static void set_info (lua_State *L) {
 | 
				
			||||||
 | 
						lua_pushliteral (L, "_COPYRIGHT");
 | 
				
			||||||
 | 
						lua_pushliteral (L, "Copyright (c) 2009 Sun Microsystems, Inc.");
 | 
				
			||||||
 | 
						lua_settable (L, -3);
 | 
				
			||||||
 | 
						lua_pushliteral (L, "_DESCRIPTION");
 | 
				
			||||||
 | 
						lua_pushliteral (L, "sigar.*");
 | 
				
			||||||
 | 
						lua_settable (L, -3);
 | 
				
			||||||
 | 
						lua_pushliteral (L, "_VERSION");
 | 
				
			||||||
 | 
						lua_pushliteral (L, "LuaSigar 0.1");
 | 
				
			||||||
 | 
						lua_settable (L, -3);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const struct luaL_reg sigarlib[] = {
 | 
				
			||||||
 | 
						{"new", lua_sigar_new},
 | 
				
			||||||
 | 
						{NULL, NULL}
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(_WIN32)
 | 
				
			||||||
 | 
					# define LUAEXT_API __declspec(dllexport)
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					# define LUAEXT_API extern
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					LUAEXT_API int luaopen_sigar (lua_State *L) {
 | 
				
			||||||
 | 
						luaL_register (L, "sigar", sigarlib);
 | 
				
			||||||
 | 
						set_info (L);
 | 
				
			||||||
 | 
						return 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										30
									
								
								configure.ac
									
									
									
									
									
								
							
							
						
						
									
										30
									
								
								configure.ac
									
									
									
									
									
								
							@ -108,6 +108,34 @@ AS_IF([test "x$with_valgrind" != xno],
 | 
				
			|||||||
      ])
 | 
					      ])
 | 
				
			||||||
AM_CONDITIONAL(USE_VALGRIND, test "x$VALGRIND" != x)
 | 
					AM_CONDITIONAL(USE_VALGRIND, test "x$VALGRIND" != x)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					dnl Check for lua
 | 
				
			||||||
 | 
					AC_MSG_CHECKING(if with lua)
 | 
				
			||||||
 | 
					AC_ARG_WITH(lua, AC_HELP_STRING([--with-lua],[lua]),
 | 
				
			||||||
 | 
					[WITH_LUA=$withval],[WITH_LUA=no])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if test "$WITH_LUA" != "no"; then
 | 
				
			||||||
 | 
					 AC_MSG_RESULT($WITH_LUA)
 | 
				
			||||||
 | 
					 # try pkgconfig
 | 
				
			||||||
 | 
					 if test "$WITH_LUA" = "yes"; then
 | 
				
			||||||
 | 
					    LUAPC=lua
 | 
				
			||||||
 | 
					  else
 | 
				
			||||||
 | 
					    LUAPC=$WITH_LUA
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 PKG_CHECK_MODULES(LUA, $LUAPC >= 5.1, [
 | 
				
			||||||
 | 
					   AC_DEFINE([HAVE_LUA], [1], [liblua])
 | 
				
			||||||
 | 
					   AC_DEFINE([HAVE_LUA_H], [1], [lua.h])
 | 
				
			||||||
 | 
					 ],[
 | 
				
			||||||
 | 
					   PKG_CHECK_MODULES(LUA, lua5.1 >= 5.1, [
 | 
				
			||||||
 | 
					     AC_DEFINE([HAVE_LUA], [1], [liblua])
 | 
				
			||||||
 | 
					     AC_DEFINE([HAVE_LUA_H], [1], [lua.h])
 | 
				
			||||||
 | 
					   ]) 
 | 
				
			||||||
 | 
					 ])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 AC_SUBST(LUA_CFLAGS)
 | 
				
			||||||
 | 
					 AC_SUBST(LUA_LIBS)
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
AC_CONFIG_FILES([
 | 
					AC_CONFIG_FILES([
 | 
				
			||||||
Makefile
 | 
					Makefile
 | 
				
			||||||
include/Makefile
 | 
					include/Makefile
 | 
				
			||||||
@ -126,6 +154,8 @@ src/os/win32/Makefile
 | 
				
			|||||||
examples/Makefile
 | 
					examples/Makefile
 | 
				
			||||||
src/sigar_version_autoconf.c
 | 
					src/sigar_version_autoconf.c
 | 
				
			||||||
tests/Makefile
 | 
					tests/Makefile
 | 
				
			||||||
 | 
					bindings/Makefile
 | 
				
			||||||
 | 
					bindings/lua/Makefile
 | 
				
			||||||
])
 | 
					])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
AC_OUTPUT
 | 
					AC_OUTPUT
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user