Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
shrapnel
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
shrapnel
Commits
79049c6b
Commit
79049c6b
authored
Jan 31, 2013
by
Sam Rushing
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
transition away from ironport's libc.pxd to the ones distributed with Cython
parent
b40bedf5
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
13 additions
and
11 deletions
+13
-11
coro/_coro.pyx
coro/_coro.pyx
+13
-11
No files found.
coro/_coro.pyx
View file @
79049c6b
# Copyright (c) 2002-2011 IronPort Systems and Cisco Systems
# Copyright (c) 2002-2011 IronPort Systems and Cisco Systems
#
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# of this software and associated documentation files (the "Software"), to deal
...
@@ -33,8 +33,6 @@ __coro_version__ = "$Id: //prod/main/ap/shrapnel/coro/_coro.pyx#114 $"
...
@@ -33,8 +33,6 @@ __coro_version__ = "$Id: //prod/main/ap/shrapnel/coro/_coro.pyx#114 $"
import
coro
as
coro_package
import
coro
as
coro_package
import
warnings
import
warnings
# Only import things from libc that are very common and have unique names.
from
libc
cimport
intptr_t
,
memcpy
,
memset
,
off_t
,
time_t
,
timeval
,
uint64_t
,
uintptr_t
# ================================================================================
# ================================================================================
# a re-implementation of the IronPort coro-threading system, this time
# a re-implementation of the IronPort coro-threading system, this time
...
@@ -52,8 +50,6 @@ from libc cimport intptr_t, memcpy, memset, off_t, time_t, timeval, uint64_t, ui
...
@@ -52,8 +50,6 @@ from libc cimport intptr_t, memcpy, memset, off_t, time_t, timeval, uint64_t, ui
# external declarations
# external declarations
# ================================================================================
# ================================================================================
#include "python.pxi"
# Note that this cimports libc.
include
"pyrex_helpers.pyx"
include
"pyrex_helpers.pyx"
include
"tsc_time_include.pyx"
include
"tsc_time_include.pyx"
...
@@ -699,12 +695,14 @@ cdef int next_coro_id
...
@@ -699,12 +695,14 @@ cdef int next_coro_id
next_coro_id
=
1
next_coro_id
=
1
from
libc.limits
cimport
INT_MAX
cdef
int
get_coro_id
()
except
-
1
:
cdef
int
get_coro_id
()
except
-
1
:
global
next_coro_id
global
next_coro_id
while
1
:
while
1
:
result
=
next_coro_id
result
=
next_coro_id
next_coro_id
=
next_coro_id
+
1
next_coro_id
=
next_coro_id
+
1
if
next_coro_id
==
libc
.
INT_MAX
:
if
next_coro_id
==
INT_MAX
:
next_coro_id
=
1
next_coro_id
=
1
if
not
_all_threads
.
has_key
(
result
):
if
not
_all_threads
.
has_key
(
result
):
return
result
return
result
...
@@ -1422,6 +1420,8 @@ def set_print_exit_string(val):
...
@@ -1422,6 +1420,8 @@ def set_print_exit_string(val):
global
_print_exit_string
global
_print_exit_string
_print_exit_string
=
val
_print_exit_string
=
val
from
libc
cimport
stdio
cdef
void
info
(
int
sig
):
cdef
void
info
(
int
sig
):
"""Function to print current coroutine when SIGINFO (CTRL-T) is received."""
"""Function to print current coroutine when SIGINFO (CTRL-T) is received."""
cdef
coro
co
cdef
coro
co
...
@@ -1430,8 +1430,8 @@ cdef void info(int sig):
...
@@ -1430,8 +1430,8 @@ cdef void info(int sig):
co
=
the_scheduler
.
_current
co
=
the_scheduler
.
_current
frame
=
_PyThreadState_Current
.
frame
frame
=
_PyThreadState_Current
.
frame
if
co
:
if
co
:
libc
.
fprintf
(
stdio
.
fprintf
(
libc
.
stderr
,
'coro %i "%s" at %s: %s %i
\
n
'
,
stdio
.
stderr
,
'coro %i "%s" at %s: %s %i
\
n
'
,
co
.
id
,
co
.
id
,
co
.
name
,
co
.
name
,
<
bytes
>
frame
.
f_code
.
co_filename
,
<
bytes
>
frame
.
f_code
.
co_filename
,
...
@@ -1439,8 +1439,8 @@ cdef void info(int sig):
...
@@ -1439,8 +1439,8 @@ cdef void info(int sig):
PyCode_Addr2Line
(
frame
.
f_code
,
frame
.
f_lasti
)
PyCode_Addr2Line
(
frame
.
f_code
,
frame
.
f_lasti
)
)
)
else
:
else
:
libc
.
fprintf
(
stdio
.
fprintf
(
libc
.
stderr
,
'No current coro. %s: %s %i
\
n
'
,
stdio
.
stderr
,
'No current coro. %s: %s %i
\
n
'
,
<
bytes
>
frame
.
f_code
.
co_filename
,
<
bytes
>
frame
.
f_code
.
co_filename
,
<
bytes
>
frame
.
f_code
.
co_name
,
<
bytes
>
frame
.
f_code
.
co_name
,
PyCode_Addr2Line
(
frame
.
f_code
,
frame
.
f_lasti
)
PyCode_Addr2Line
(
frame
.
f_code
,
frame
.
f_lasti
)
...
@@ -1468,10 +1468,12 @@ _exit_code = 0
...
@@ -1468,10 +1468,12 @@ _exit_code = 0
global
_print_exit_string
global
_print_exit_string
_print_exit_string
=
True
_print_exit_string
=
True
from
libc.signal
cimport
signal
,
SIGINFO
,
sighandler_t
# A convenient place to make absolutely sure the C random number generator is
# A convenient place to make absolutely sure the C random number generator is
# seeded.
# seeded.
IF
UNAME_SYSNAME
==
"Linux"
:
IF
UNAME_SYSNAME
==
"Linux"
:
random
()
random
()
ELSE
:
ELSE
:
srandomdev
()
srandomdev
()
libc
.
signal
(
libc
.
SIGINFO
,
info
)
signal
(
SIGINFO
,
<
sighandler_t
>
info
)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment