Simplify SharedArray.

This commit is contained in:
cheatfate 2016-07-05 19:56:18 +03:00
commit 80ae938ddf
2 changed files with 2 additions and 8 deletions

View file

@ -185,19 +185,13 @@ else:
import locks import locks
type type
SharedArrayHolder[T] = object
part: array[1, T]
SharedArray {.unchecked.}[T] = array[0..100_000_000, T] SharedArray {.unchecked.}[T] = array[0..100_000_000, T]
proc allocSharedArray[T](nsize: int): ptr SharedArray[T] = proc allocSharedArray[T](nsize: int): ptr SharedArray[T] =
let holder = cast[ptr SharedArrayHolder[T]]( result = cast[ptr SharedArray[T]](allocShared0(sizeof(T) & nsize))
allocShared0(sizeof(T) * nsize)
)
result = cast[ptr SharedArray[T]](addr(holder.part[0]))
proc deallocSharedArray[T](sa: ptr SharedArray[T]) = proc deallocSharedArray[T](sa: ptr SharedArray[T]) =
deallocShared(cast[pointer](sa)) deallocShared(cast[pointer](sa))
type type
Event* {.pure.} = enum Event* {.pure.} = enum
Read, Write, Timer, Signal, Process, Vnode, User, Error, Oneshot Read, Write, Timer, Signal, Process, Vnode, User, Error, Oneshot

View file

@ -25,7 +25,7 @@ when defined(macosx) or defined(freebsd):
proc sysctl(name: ptr cint, namelen: cuint, oldp: pointer, oldplen: ptr int, proc sysctl(name: ptr cint, namelen: cuint, oldp: pointer, oldplen: ptr int,
newp: pointer, newplen: int): cint newp: pointer, newplen: int): cint
{.importc: "sysctl",header: """#include <sys/types.h> {.importc: "sysctl",header: """#include <sys/types.h>
#include <sys/sysctl.h>"""} #include <sys/sysctl.h>"""}
elif defined(netbsd) or defined(openbsd): elif defined(netbsd) or defined(openbsd):
# OpenBSD and NetBSD don't have KERN_MAXFILESPERPROC, so we are using # OpenBSD and NetBSD don't have KERN_MAXFILESPERPROC, so we are using
# KERN_MAXFILES, because KERN_MAXFILES is always bigger, # KERN_MAXFILES, because KERN_MAXFILES is always bigger,