diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..231cf8f
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,10 @@
+*.opensdf
+*.orig
+*.sdf
+*.suo
+*.vcxproj.filters
+*.vcxproj.user
+
+/Debug
+/Release
+/ipch
diff --git a/common.gypi b/common.gypi
new file mode 100644
index 0000000..e707e44
--- /dev/null
+++ b/common.gypi
@@ -0,0 +1,172 @@
+{
+ 'variables': {
+ 'visibility%': 'hidden',
+ 'library%': 'static_library', # allow override to 'shared_library' for DLL/.so builds
+ 'component%': 'static_library',
+ 'host_arch%': '',
+ 'target_arch%': ''
+ },
+
+ 'target_defaults': {
+ 'default_configuration': 'Debug',
+ 'configurations': {
+
+ 'Debug': {
+ 'defines': [ 'DEBUG', '_DEBUG' ],
+ 'cflags': [ '-g', '-O0' ],
+ 'msvs_settings': {
+ 'VCCLCompilerTool': {
+ 'target_conditions': [
+ ['library=="static_library"', {
+ 'RuntimeLibrary': 1 # static debug
+ }, {
+ 'RuntimeLibrary': 3 # DLL debug
+ }]
+ ],
+ 'Optimization': 0, # /Od, no optimization
+ 'MinimalRebuild': 'false',
+ 'OmitFramePointers': 'false',
+ 'BasicRuntimeChecks': 3 # /RTC1
+ },
+ 'VCLinkerTool': {
+ 'LinkIncremental': 2 # enable incremental linking
+ }
+ },
+ 'xcode_settings': {
+ 'GCC_OPTIMIZATION_LEVEL': '0'
+ }
+ },
+
+ 'Release': {
+ 'defines': [ 'NDEBUG' ],
+ 'cflags': [
+ '-O3',
+ '-fomit-frame-pointer',
+ '-fdata-sections',
+ '-ffunction-sections'
+ ],
+ 'msvs_settings': {
+ 'VCCLCompilerTool': {
+ 'target_conditions': [
+ ['library=="static_library"', {
+ 'RuntimeLibrary': 0, # static release
+ }, {
+ 'RuntimeLibrary': 2, # debug release
+ }],
+ ],
+ 'Optimization': 3, # /Ox, full optimization
+ 'FavorSizeOrSpeed': 1, # /Ot, favour speed over size
+ 'InlineFunctionExpansion': 2, # /Ob2, inline anything eligible
+ 'WholeProgramOptimization': 'true', # /GL, whole program optimization, needed for LTCG
+ 'OmitFramePointers': 'true',
+ 'EnableFunctionLevelLinking': 'true',
+ 'EnableIntrinsicFunctions': 'true'
+ },
+ 'VCLibrarianTool': {
+ 'AdditionalOptions': [
+ '/LTCG' # link time code generation
+ ]
+ },
+ 'VCLinkerTool': {
+ 'LinkTimeCodeGeneration': 1, # link-time code generation
+ 'OptimizeReferences': 2, # /OPT:REF
+ 'EnableCOMDATFolding': 2, # /OPT:ICF
+ 'LinkIncremental': 1 # disable incremental linking
+ },
+ },
+ }
+ },
+
+ 'msvs_settings': {
+ 'VCCLCompilerTool': {
+ 'StringPooling': 'true', # pool string literals
+ 'DebugInformationFormat': 3, # Generate a PDB
+ 'WarningLevel': 3,
+ 'BufferSecurityCheck': 'true',
+ 'ExceptionHandling': 1, # /EHsc
+ 'SuppressStartupBanner': 'true',
+ 'WarnAsError': 'false',
+ 'AdditionalOptions': [
+ '/MP', # compile across multiple CPUs
+ ],
+ },
+ 'VCLinkerTool': {
+ 'GenerateDebugInformation': 'true',
+ 'RandomizedBaseAddress': 2, # enable ASLR
+ 'DataExecutionPrevention': 2, # enable DEP
+ 'AllowIsolation': 'true',
+ 'SuppressStartupBanner': 'true',
+ 'target_conditions': [
+ ['_type=="executable"', {
+ 'SubSystem': 1, # console executable
+ }],
+ ],
+ },
+ },
+
+ 'xcode_settings': {
+ 'ALWAYS_SEARCH_USER_PATHS': 'NO',
+ 'GCC_CW_ASM_SYNTAX': 'NO', # No -fasm-blocks
+ 'GCC_ENABLE_CPP_EXCEPTIONS': 'NO', # -fno-exceptions
+ 'GCC_ENABLE_CPP_RTTI': 'NO', # -fno-rtti
+ 'GCC_ENABLE_PASCAL_STRINGS': 'NO', # No -mpascal-strings
+ # GCC_INLINES_ARE_PRIVATE_EXTERN maps to -fvisibility-inlines-hidden
+ 'GCC_INLINES_ARE_PRIVATE_EXTERN': 'YES',
+ 'GCC_SYMBOLS_PRIVATE_EXTERN': 'YES', # -fvisibility=hidden
+ 'GCC_THREADSAFE_STATICS': 'NO', # -fno-threadsafe-statics
+ 'GCC_WARN_ABOUT_MISSING_NEWLINE': 'YES', # -Wnewline-eof
+ 'PREBINDING': 'NO', # No -Wl,-prebind
+ 'USE_HEADERMAP': 'NO',
+ 'WARNING_CFLAGS': [
+ '-Wall',
+ '-Wendif-labels',
+ '-W',
+ '-Wno-unused-parameter'
+ ]
+ },
+
+ 'conditions': [
+ ['OS == "win"', {
+ 'msvs_cygwin_shell': 0, # prevent actions from trying to use cygwin
+ 'defines': [
+ 'WIN32',
+ # we don't want VC++ warning us about how dangerous C functions are.
+ '_CRT_SECURE_NO_DEPRECATE',
+ # ... or that C implementations shouldn't use POSIX names
+ '_CRT_NONSTDC_NO_DEPRECATE'
+ ],
+ }],
+
+ [ 'OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris"', {
+ 'variables': {
+ 'gcc_version%': ')'
+ },
+ 'cflags': [ '-Wall' ],
+ 'cflags_cc': [ '-fno-rtti', '-fno-exceptions' ],
+ 'conditions': [
+ [ 'host_arch != target_arch and target_arch=="ia32"', {
+ 'cflags': [ '-m32' ],
+ 'ldflags': [ '-m32' ]
+ }],
+ [ 'OS=="linux"', {
+ 'cflags': [ '-ansi' ]
+ }],
+ [ 'visibility=="hidden" and gcc_version >= "4.0.0"', {
+ 'cflags': [ '-fvisibility=hidden' ]
+ }],
+ ]
+ }]
+ ],
+
+ 'target_conditions': [
+ ['_type!="static_library"', {
+ 'cflags': [ '-fPIC' ],
+ 'xcode_settings': {
+ 'GCC_DYNAMIC_NO_PIC': 'NO', # No -mdynamic-no-pic
+ # (Equivalent to -fPIC)
+ 'OTHER_LDFLAGS': [ '-Wl,-search_paths_first' ]
+ }
+ }]
+ ]
+ }
+}
diff --git a/epoll/epoll.sln b/epoll/epoll.sln
new file mode 100644
index 0000000..e4a658c
--- /dev/null
+++ b/epoll/epoll.sln
@@ -0,0 +1,20 @@
+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "epoll", "epoll.vcxproj", "{09E15239-A3A8-4C32-8FA7-D1EA9CB9F9F8}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Win32 = Debug|Win32
+ Release|Win32 = Release|Win32
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {09E15239-A3A8-4C32-8FA7-D1EA9CB9F9F8}.Debug|Win32.ActiveCfg = Debug|Win32
+ {09E15239-A3A8-4C32-8FA7-D1EA9CB9F9F8}.Debug|Win32.Build.0 = Debug|Win32
+ {09E15239-A3A8-4C32-8FA7-D1EA9CB9F9F8}.Release|Win32.ActiveCfg = Release|Win32
+ {09E15239-A3A8-4C32-8FA7-D1EA9CB9F9F8}.Release|Win32.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/epoll/epoll.vcxproj b/epoll/epoll.vcxproj
new file mode 100644
index 0000000..2183579
--- /dev/null
+++ b/epoll/epoll.vcxproj
@@ -0,0 +1,81 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Release
+ Win32
+
+
+
+ {09E15239-A3A8-4C32-8FA7-D1EA9CB9F9F8}
+ Win32Proj
+ epoll
+
+
+
+ Application
+ true
+ Unicode
+
+
+ Application
+ false
+ true
+ Unicode
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+ false
+
+
+
+
+
+ Level3
+ Disabled
+ WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
+
+
+ Console
+ true
+
+
+
+
+ Level3
+
+
+ MaxSpeed
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
+
+
+ Console
+ true
+ true
+ true
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/gen.bat b/gen.bat
new file mode 100644
index 0000000..07247b3
--- /dev/null
+++ b/gen.bat
@@ -0,0 +1 @@
+python \gyp\gyp -Dlibrary=static_library -Icommon.gypi wpoll.gyp --depth=.
diff --git a/include/wpoll.h b/include/wpoll.h
new file mode 100644
index 0000000..8d1c8b6
--- /dev/null
+++ b/include/wpoll.h
@@ -0,0 +1 @@
+
diff --git a/src/msafd.h b/src/msafd.h
new file mode 100644
index 0000000..8d1c8b6
--- /dev/null
+++ b/src/msafd.h
@@ -0,0 +1 @@
+
diff --git a/src/test.c b/src/test.c
new file mode 100644
index 0000000..8d1c8b6
--- /dev/null
+++ b/src/test.c
@@ -0,0 +1 @@
+
diff --git a/src/tree.h b/src/tree.h
new file mode 100644
index 0000000..8d1c8b6
--- /dev/null
+++ b/src/tree.h
@@ -0,0 +1 @@
+
diff --git a/src/wpoll.c b/src/wpoll.c
new file mode 100644
index 0000000..8d1c8b6
--- /dev/null
+++ b/src/wpoll.c
@@ -0,0 +1 @@
+
diff --git a/test.vcxproj b/test.vcxproj
new file mode 100644
index 0000000..25a3a44
--- /dev/null
+++ b/test.vcxproj
@@ -0,0 +1 @@
+DebugWin32ReleaseWin32{58F32AFA-FCBB-2A4D-DCB4-242324A2FAC4}Win32ProjtestApplication$(ExecutablePath);$(MSBuildProjectDirectory)\.\bin\;$(MSBuildProjectDirectory)\.\bin\$(Configuration)\obj\$(ProjectName)\falsetrue$(SolutionDir)$(Configuration)\$(ProjectName)$(OutDir)\$(ProjectName).exeinclude;src;%(AdditionalIncludeDirectories)/MP %(AdditionalOptions)EnableFastCheckstrueProgramDatabaseSyncfalsefalseDisabledWIN32;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;DEBUG;_DEBUG;%(PreprocessorDefinitions)MultiThreadedDebugtruetruefalseLevel3ws2_32.lib;%(AdditionalDependencies)truetruetrue$(OutDir)$(ProjectName).exetrueConsoletrueinclude;src;%(AdditionalIncludeDirectories)WIN32;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;DEBUG;_DEBUG;%(PreprocessorDefinitions);%(PreprocessorDefinitions)include;src;%(AdditionalIncludeDirectories)/MP %(AdditionalOptions)trueProgramDatabaseSyncSpeedtrueAnySuitabletruetrueFullWIN32;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;NDEBUG;%(PreprocessorDefinitions)MultiThreadedtruetruefalseLevel3true/LTCG %(AdditionalOptions)ws2_32.lib;%(AdditionalDependencies)truetruetruetrueUseLinkTimeCodeGenerationtrue$(OutDir)$(ProjectName).exetrueConsoletrueinclude;src;%(AdditionalIncludeDirectories)WIN32;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;NDEBUG;%(PreprocessorDefinitions);%(PreprocessorDefinitions){9221E672-D419-F7D7-9259-A7D2BE1D177A}false
\ No newline at end of file
diff --git a/wpoll.gyp b/wpoll.gyp
new file mode 100644
index 0000000..0a4b554
--- /dev/null
+++ b/wpoll.gyp
@@ -0,0 +1,40 @@
+{
+ 'target_defaults': {
+ },
+
+ 'targets': [
+ {
+ 'target_name': 'wpoll',
+ 'type': '<(library)',
+
+ 'libraries': ['-lws2_32.lib' ],
+ 'include_dirs': [ 'include', 'src' ],
+
+ 'direct_dependent_settings': {
+ 'include_dirs': [ 'include' ],
+ 'libraries': ['-lws2_32.lib' ]
+ },
+
+ 'sources': [
+ 'common.gypi',
+ 'include/wpoll.h',
+ 'src/msafd.h',
+ 'src/tree.h',
+ 'src/wpoll.c',
+ ]
+ },
+
+ {
+ 'target_name': 'test',
+ 'type': 'executable',
+
+ 'dependencies': [ 'wpoll' ],
+ 'libraries': ['-lws2_32.lib' ],
+ 'include_dirs': [ 'include', 'src' ],
+
+ 'sources': [
+ 'src/test.c'
+ ]
+ }
+ ]
+}
diff --git a/wpoll.sln b/wpoll.sln
new file mode 100644
index 0000000..395f515
--- /dev/null
+++ b/wpoll.sln
@@ -0,0 +1,30 @@
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test", "test.vcxproj", "{58F32AFA-FCBB-2A4D-DCB4-242324A2FAC4}"
+ ProjectSection(ProjectDependencies) = postProject
+ {9221E672-D419-F7D7-9259-A7D2BE1D177A} = {9221E672-D419-F7D7-9259-A7D2BE1D177A}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wpoll", "wpoll.vcxproj", "{9221E672-D419-F7D7-9259-A7D2BE1D177A}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Win32 = Debug|Win32
+ Release|Win32 = Release|Win32
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {58F32AFA-FCBB-2A4D-DCB4-242324A2FAC4}.Debug|Win32.ActiveCfg = Debug|Win32
+ {58F32AFA-FCBB-2A4D-DCB4-242324A2FAC4}.Debug|Win32.Build.0 = Debug|Win32
+ {58F32AFA-FCBB-2A4D-DCB4-242324A2FAC4}.Release|Win32.ActiveCfg = Release|Win32
+ {58F32AFA-FCBB-2A4D-DCB4-242324A2FAC4}.Release|Win32.Build.0 = Release|Win32
+ {9221E672-D419-F7D7-9259-A7D2BE1D177A}.Debug|Win32.ActiveCfg = Debug|Win32
+ {9221E672-D419-F7D7-9259-A7D2BE1D177A}.Debug|Win32.Build.0 = Debug|Win32
+ {9221E672-D419-F7D7-9259-A7D2BE1D177A}.Release|Win32.ActiveCfg = Release|Win32
+ {9221E672-D419-F7D7-9259-A7D2BE1D177A}.Release|Win32.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(NestedProjects) = preSolution
+ EndGlobalSection
+EndGlobal
diff --git a/wpoll.vcxproj b/wpoll.vcxproj
new file mode 100644
index 0000000..f0d1370
--- /dev/null
+++ b/wpoll.vcxproj
@@ -0,0 +1 @@
+DebugWin32ReleaseWin32{9221E672-D419-F7D7-9259-A7D2BE1D177A}Win32ProjwpollStaticLibrary$(ExecutablePath);$(MSBuildProjectDirectory)\.\bin\;$(MSBuildProjectDirectory)\.\bin\$(Configuration)\obj\$(ProjectName)\falsetrue$(SolutionDir)$(Configuration)\$(ProjectName)$(OutDir)\lib\$(ProjectName).libinclude;src;%(AdditionalIncludeDirectories)/MP %(AdditionalOptions)EnableFastCheckstrueProgramDatabaseSyncfalsefalseDisabledWIN32;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;DEBUG;_DEBUG;%(PreprocessorDefinitions)MultiThreadedDebugtruetruefalseLevel3$(OutDir)lib\$(ProjectName).libws2_32.lib;%(AdditionalDependencies)truetruetruetruetrueinclude;src;%(AdditionalIncludeDirectories)WIN32;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;DEBUG;_DEBUG;%(PreprocessorDefinitions);%(PreprocessorDefinitions)include;src;%(AdditionalIncludeDirectories)/MP %(AdditionalOptions)trueProgramDatabaseSyncSpeedtrueAnySuitabletruetrueFullWIN32;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;NDEBUG;%(PreprocessorDefinitions)MultiThreadedtruetruefalseLevel3true/LTCG %(AdditionalOptions)$(OutDir)lib\$(ProjectName).libws2_32.lib;%(AdditionalDependencies)truetruetruetrueUseLinkTimeCodeGenerationtruetruetrueinclude;src;%(AdditionalIncludeDirectories)WIN32;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;NDEBUG;%(PreprocessorDefinitions);%(PreprocessorDefinitions)
\ No newline at end of file