mirror of
https://github.com/octoleo/lsyncd.git
synced 2024-11-16 01:47:08 +00:00
rewriting signal system
This commit is contained in:
parent
a63f33dc4a
commit
8377a2d6a4
@ -10,7 +10,7 @@ find_package( Lua REQUIRED )
|
|||||||
include_directories ( ${LUA_INCLUDE_DIR} )
|
include_directories ( ${LUA_INCLUDE_DIR} )
|
||||||
|
|
||||||
# Setting Lsyncd sources.
|
# Setting Lsyncd sources.
|
||||||
# Order here doesn't matter much.
|
# Order doesn't matter here.
|
||||||
set( LSYNCD_SRC
|
set( LSYNCD_SRC
|
||||||
core/log.c
|
core/log.c
|
||||||
core/observe.c
|
core/observe.c
|
||||||
@ -42,7 +42,7 @@ configure_file (
|
|||||||
"${PROJECT_SOURCE_DIR}/config.h.in"
|
"${PROJECT_SOURCE_DIR}/config.h.in"
|
||||||
"${PROJECT_BINARY_DIR}/config.h"
|
"${PROJECT_BINARY_DIR}/config.h"
|
||||||
)
|
)
|
||||||
include_directories("${PROJECT_BINARY_DIR}")
|
include_directories( "${PROJECT_BINARY_DIR}" )
|
||||||
|
|
||||||
|
|
||||||
# The mantle written in Lua
|
# The mantle written in Lua
|
||||||
@ -51,6 +51,7 @@ include_directories("${PROJECT_BINARY_DIR}")
|
|||||||
# on initialization of Lsyncd.
|
# on initialization of Lsyncd.
|
||||||
#
|
#
|
||||||
set( MANTLE_CODE
|
set( MANTLE_CODE
|
||||||
|
${PROJECT_SOURCE_DIR}/signames.lua
|
||||||
${PROJECT_SOURCE_DIR}/mantle/array.lua
|
${PROJECT_SOURCE_DIR}/mantle/array.lua
|
||||||
${PROJECT_SOURCE_DIR}/mantle/counter.lua
|
${PROJECT_SOURCE_DIR}/mantle/counter.lua
|
||||||
${PROJECT_SOURCE_DIR}/mantle/queue.lua
|
${PROJECT_SOURCE_DIR}/mantle/queue.lua
|
||||||
@ -73,6 +74,13 @@ set( MANTLE_CODE
|
|||||||
${PROJECT_SOURCE_DIR}/mantle/userenv.lua
|
${PROJECT_SOURCE_DIR}/mantle/userenv.lua
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Generates the signal list for this system
|
||||||
|
add_custom_command( OUTPUT signames.lua
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E echo "Generating signal name list"
|
||||||
|
COMMAND ${PROJECT_SOURCE_DIR}/signames.sh signames.lua
|
||||||
|
DEPENDS signames.sh
|
||||||
|
)
|
||||||
|
|
||||||
# The default sync implementations.
|
# The default sync implementations.
|
||||||
#
|
#
|
||||||
# Order here matters as the scripts lua will be executed in this order
|
# Order here matters as the scripts lua will be executed in this order
|
||||||
|
18
core/main.c
18
core/main.c
@ -339,11 +339,19 @@ main1( int argc, char *argv[] )
|
|||||||
printf( "kernels clocks_per_sec=%ld\n", clocks_per_sec );
|
printf( "kernels clocks_per_sec=%ld\n", clocks_per_sec );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
signal_init( );
|
||||||
|
|
||||||
|
#ifdef WITH_INOTIFY
|
||||||
|
open_inotify( L );
|
||||||
|
#endif
|
||||||
|
|
||||||
mci_load_mantle( L );
|
mci_load_mantle( L );
|
||||||
|
|
||||||
mci_load_default( L );
|
mci_load_default( L );
|
||||||
|
|
||||||
// checks if there is a "-help" or "--help"
|
// checks if there is a "-help" or "--help"
|
||||||
{
|
{
|
||||||
|
// FIXME this should be done in mantle
|
||||||
int i;
|
int i;
|
||||||
for( i = argp; i < argc; i++ )
|
for( i = argp; i < argc; i++ )
|
||||||
{
|
{
|
||||||
@ -371,8 +379,8 @@ main1( int argc, char *argv[] )
|
|||||||
|
|
||||||
while( argp < argc )
|
while( argp < argc )
|
||||||
{
|
{
|
||||||
lua_pushstring( L, argv[ argp++ ] );
|
|
||||||
lua_pushnumber( L, idx++ );
|
lua_pushnumber( L, idx++ );
|
||||||
|
lua_pushstring( L, argv[ argp++ ] );
|
||||||
lua_settable( L, -3 );
|
lua_settable( L, -3 );
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -392,7 +400,7 @@ main1( int argc, char *argv[] )
|
|||||||
if( first_time )
|
if( first_time )
|
||||||
{
|
{
|
||||||
// If not first time, simply retains the config file given
|
// If not first time, simply retains the config file given
|
||||||
s = lua_tostring(L, -1);
|
s = lua_tostring( L, -1 );
|
||||||
|
|
||||||
if( s ) lsyncd_config_file = s_strdup( s );
|
if( s ) lsyncd_config_file = s_strdup( s );
|
||||||
}
|
}
|
||||||
@ -400,12 +408,6 @@ main1( int argc, char *argv[] )
|
|||||||
lua_pop( L, 2 );
|
lua_pop( L, 2 );
|
||||||
}
|
}
|
||||||
|
|
||||||
signal_init( );
|
|
||||||
|
|
||||||
#ifdef WITH_INOTIFY
|
|
||||||
open_inotify( L );
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// checks existence of the config file
|
// checks existence of the config file
|
||||||
if( lsyncd_config_file )
|
if( lsyncd_config_file )
|
||||||
{
|
{
|
||||||
|
@ -653,7 +653,6 @@ static const luaL_Reg corelib[ ] =
|
|||||||
// { "onsignal", l_onsignal },
|
// { "onsignal", l_onsignal },
|
||||||
{ "readdir", l_readdir },
|
{ "readdir", l_readdir },
|
||||||
{ "realdir", l_realdir },
|
{ "realdir", l_realdir },
|
||||||
{ "signames", l_signames },
|
|
||||||
{ "stackdump", l_stackdump },
|
{ "stackdump", l_stackdump },
|
||||||
{ "terminate", l_terminate },
|
{ "terminate", l_terminate },
|
||||||
{ NULL, NULL }
|
{ NULL, NULL }
|
||||||
|
@ -112,29 +112,3 @@ signal_init( )
|
|||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
| Forwards the result of psiginfo to mantle.
|
|
||||||
|
|
|
||||||
| Params on Lua stack:
|
|
||||||
|
|
|
||||||
| Returns on Lua stack:
|
|
||||||
| A table of all signalnames as keys and their signal number as value.
|
|
||||||
*/
|
|
||||||
int
|
|
||||||
l_signames( lua_State * L )
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
lua_newtable( L );
|
|
||||||
|
|
||||||
for( i = 0; i < NSIG; i++ )
|
|
||||||
{
|
|
||||||
lua_pushnumber( L, i );
|
|
||||||
lua_pushstring( L, strsignal( i ) );
|
|
||||||
lua_settable( L, -3 );
|
|
||||||
}
|
|
||||||
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
@ -18,7 +18,4 @@ extern volatile sig_atomic_t sigcode;
|
|||||||
// Initializes signal handling.
|
// Initializes signal handling.
|
||||||
extern void signal_init( );
|
extern void signal_init( );
|
||||||
|
|
||||||
// returns signal name/signums as table
|
|
||||||
int l_signames( lua_State * L );
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -1,5 +1,9 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# removes all stuff generated by cmake / make
|
#
|
||||||
|
# Removes all stuff generated by cmake / make
|
||||||
|
#
|
||||||
|
# This mini script supposes an inplace build.
|
||||||
|
#
|
||||||
rm -rf build/ CMakeFiles/
|
rm -rf build/ CMakeFiles/
|
||||||
|
|
||||||
rm -f \
|
rm -f \
|
||||||
@ -9,6 +13,7 @@ rm -f \
|
|||||||
CMakeCache.txt \
|
CMakeCache.txt \
|
||||||
cmake_install.cmake \
|
cmake_install.cmake \
|
||||||
install_manifest.txt \
|
install_manifest.txt \
|
||||||
|
signames.lua \
|
||||||
default.c \
|
default.c \
|
||||||
core.c \
|
core.c \
|
||||||
*.o \
|
*.o \
|
||||||
|
@ -244,6 +244,12 @@ function mci.configure(
|
|||||||
args, -- arguments given by user
|
args, -- arguments given by user
|
||||||
monitors -- list of monitors the core can do
|
monitors -- list of monitors the core can do
|
||||||
)
|
)
|
||||||
|
print( "mci.configure", #args )
|
||||||
|
|
||||||
|
for k, v in pairs( args ) do
|
||||||
|
print( 'a', k, v )
|
||||||
|
end
|
||||||
|
|
||||||
Monitor.initialize( monitors )
|
Monitor.initialize( monitors )
|
||||||
|
|
||||||
--
|
--
|
||||||
@ -380,16 +386,11 @@ function mci.initialize
|
|||||||
firstTime -- true when Lsyncd startups the first time,
|
firstTime -- true when Lsyncd startups the first time,
|
||||||
-- -- false on resets, due to HUP signal or monitor queue overflow.
|
-- -- false on resets, due to HUP signal or monitor queue overflow.
|
||||||
)
|
)
|
||||||
|
print( 'HELLO' )
|
||||||
do
|
do
|
||||||
local signames = core.signames( )
|
for num, name in pairs( signames )
|
||||||
local signum = 0
|
|
||||||
signame = signames[ 0 ]
|
|
||||||
|
|
||||||
while signame ~= nil
|
|
||||||
do
|
do
|
||||||
print( 'SIG', signum, signame )
|
print( 'SIG', num, name )
|
||||||
signum = signum + 1
|
|
||||||
signame = signames[ signum ]
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
14
signames.sh
14
signames.sh
@ -4,27 +4,35 @@
|
|||||||
# Creates a .lua file for all signal names understood by the kill command
|
# Creates a .lua file for all signal names understood by the kill command
|
||||||
# on the system Lsyncd is being compiled for.
|
# on the system Lsyncd is being compiled for.
|
||||||
#
|
#
|
||||||
|
# This script has been tested with bash and dash.
|
||||||
|
#
|
||||||
# License: GPLv2 (see COPYING) or any later version
|
# License: GPLv2 (see COPYING) or any later version
|
||||||
# Authors: Axel Kittenberger <axkibe@gmail.com>
|
# Authors: Axel Kittenberger <axkibe@gmail.com>
|
||||||
#
|
#
|
||||||
KILL=/bin/kill
|
KILL=/bin/kill
|
||||||
|
|
||||||
|
|
||||||
if [ "$#" -ne 1 ];
|
if [ "$#" -ne 1 ];
|
||||||
then
|
then
|
||||||
echo >&2 "$0 needs excatly one argument -- the lua file to create"
|
echo >&2 "$0 needs excatly one argument -- the lua file to create"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if ! [ "$BASH_VERSION" = '' ];
|
||||||
|
then
|
||||||
|
echoe=-e
|
||||||
|
fi
|
||||||
|
|
||||||
echo "-- This file is autogenerated by $0 querying `$KILL --version`" > $1
|
echo "-- This file is autogenerated by $0 querying `$KILL --version`" > $1
|
||||||
echo "siglist =" >> $1
|
echo "signames =" >> $1
|
||||||
echo "{" >> $1
|
echo "{" >> $1
|
||||||
|
|
||||||
n=1
|
n=1
|
||||||
while name=`kill -l $n 2>/dev/null`;
|
while name=`kill -l $n 2>/dev/null`;
|
||||||
do
|
do
|
||||||
if [[ $name ]]
|
if ! [ -z $name ]
|
||||||
then
|
then
|
||||||
echo -e "\t[ $n ] = '$name'," >> $1
|
echo $echoe "\t[ $n ] = '$name'," >> $1
|
||||||
fi
|
fi
|
||||||
n=$(( n + 1 ))
|
n=$(( n + 1 ))
|
||||||
done
|
done
|
||||||
|
Loading…
Reference in New Issue
Block a user