Generated by Cython 0.29.36
Yellow lines hint at Python interaction.
Click on a line that starts with a "+
" to see the C code that Cython generated for it.
Raw output: enclosure.c
001: # cython: language_level=3, c_string_type=unicode, c_string_encoding=default
002:
003: from . cimport ses
004:
005: from libc.stdint cimport uint16_t
006: from posix.ioctl cimport ioctl
007: from posix.fcntl cimport open, O_RDWR
008: from posix.unistd cimport close
009: from posix.strings cimport bzero
010: from libc.stdlib cimport calloc, free
011: from libc.stdint cimport UINT16_MAX
012: from libc.string cimport strdup
013:
014:
+015: cdef class Enclosure(object):
struct __pyx_obj_3bsd_9enclosure_Enclosure { PyObject_HEAD struct __pyx_vtabstruct_3bsd_9enclosure_Enclosure *__pyx_vtab; char const *enc; int enc_fd; }; struct __pyx_vtabstruct_3bsd_9enclosure_Enclosure { void (*clean_up)(struct __pyx_obj_3bsd_9enclosure_Enclosure *, int, struct __pyx_t_3bsd_3ses_elm_info_t *, encioc_element_t *); int (*setobj)(struct __pyx_obj_3bsd_9enclosure_Enclosure *, long, unsigned char *); }; static struct __pyx_vtabstruct_3bsd_9enclosure_Enclosure *__pyx_vtabptr_3bsd_9enclosure_Enclosure;
016:
017: cdef const char* enc # /dev/ses device passed to us
018: cdef int enc_fd # file descriptor for enclosure device
019:
+020: def __cinit__(self, enc):
/* Python wrapper */ static int __pyx_pw_3bsd_9enclosure_9Enclosure_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static int __pyx_pw_3bsd_9enclosure_9Enclosure_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_enc = 0; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_enc,0}; PyObject* values[1] = {0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_enc)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(0, 20, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 1) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); } __pyx_v_enc = values[0]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 20, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("bsd.enclosure.Enclosure.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return -1; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_3bsd_9enclosure_9Enclosure___cinit__(((struct __pyx_obj_3bsd_9enclosure_Enclosure *)__pyx_v_self), __pyx_v_enc); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_3bsd_9enclosure_9Enclosure___cinit__(struct __pyx_obj_3bsd_9enclosure_Enclosure *__pyx_v_self, PyObject *__pyx_v_enc) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__cinit__", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("bsd.enclosure.Enclosure.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+021: self.enc = enc
__pyx_t_1 = __Pyx_PyObject_AsString(__pyx_v_enc); if (unlikely((!__pyx_t_1) && PyErr_Occurred())) __PYX_ERR(0, 21, __pyx_L1_error) __pyx_v_self->enc = __pyx_t_1;
+022: self.enc_fd = -1
__pyx_v_self->enc_fd = -1;
+023: with nogil:
{ #ifdef WITH_THREAD PyThreadState *_save; Py_UNBLOCK_THREADS __Pyx_FastGIL_Remember(); #endif /*try:*/ { /* … */ /*finally:*/ { /*normal exit:*/{ #ifdef WITH_THREAD __Pyx_FastGIL_Forget(); Py_BLOCK_THREADS #endif goto __pyx_L5; } __pyx_L4_error: { #ifdef WITH_THREAD __Pyx_FastGIL_Forget(); Py_BLOCK_THREADS #endif goto __pyx_L1_error; } __pyx_L5:; } }
+024: self.enc_fd = open(self.enc, O_RDWR)
__pyx_v_self->enc_fd = open(__pyx_v_self->enc, O_RDWR);
+025: if self.enc_fd == -1:
__pyx_t_2 = ((__pyx_v_self->enc_fd == -1L) != 0); if (__pyx_t_2) { /* … */ } }
+026: raise RuntimeError('Failed to open device')
{ #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); #endif /*try:*/ { __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple_, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 26, __pyx_L8_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(0, 26, __pyx_L8_error) } /*finally:*/ { __pyx_L8_error: { #ifdef WITH_THREAD __Pyx_PyGILState_Release(__pyx_gilstate_save); #endif goto __pyx_L4_error; } } } /* … */ __pyx_tuple_ = PyTuple_Pack(1, __pyx_kp_u_Failed_to_open_device); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 26, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple_); __Pyx_GIVEREF(__pyx_tuple_);
027:
+028: def __init__(self, enc):
/* Python wrapper */ static int __pyx_pw_3bsd_9enclosure_9Enclosure_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static int __pyx_pw_3bsd_9enclosure_9Enclosure_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_enc = 0; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_enc,0}; PyObject* values[1] = {0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_enc)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 28, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 1) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); } __pyx_v_enc = values[0]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 28, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("bsd.enclosure.Enclosure.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return -1; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_3bsd_9enclosure_9Enclosure_2__init__(((struct __pyx_obj_3bsd_9enclosure_Enclosure *)__pyx_v_self), __pyx_v_enc); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_3bsd_9enclosure_9Enclosure_2__init__(struct __pyx_obj_3bsd_9enclosure_Enclosure *__pyx_v_self, PyObject *__pyx_v_enc) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__init__", 0); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("bsd.enclosure.Enclosure.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
+029: self.enc = enc
__pyx_t_1 = __Pyx_PyObject_AsString(__pyx_v_enc); if (unlikely((!__pyx_t_1) && PyErr_Occurred())) __PYX_ERR(0, 29, __pyx_L1_error) __pyx_v_self->enc = __pyx_t_1;
030:
+031: def __dealloc__(self):
/* Python wrapper */ static void __pyx_pw_3bsd_9enclosure_9Enclosure_5__dealloc__(PyObject *__pyx_v_self); /*proto*/ static void __pyx_pw_3bsd_9enclosure_9Enclosure_5__dealloc__(PyObject *__pyx_v_self) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0); __pyx_pf_3bsd_9enclosure_9Enclosure_4__dealloc__(((struct __pyx_obj_3bsd_9enclosure_Enclosure *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); } static void __pyx_pf_3bsd_9enclosure_9Enclosure_4__dealloc__(struct __pyx_obj_3bsd_9enclosure_Enclosure *__pyx_v_self) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__dealloc__", 0); /* … */ /* function exit code */ __Pyx_RefNannyFinishContext(); }
+032: with nogil:
{ #ifdef WITH_THREAD PyThreadState *_save; Py_UNBLOCK_THREADS __Pyx_FastGIL_Remember(); #endif /*try:*/ { /* … */ /*finally:*/ { /*normal exit:*/{ #ifdef WITH_THREAD __Pyx_FastGIL_Forget(); Py_BLOCK_THREADS #endif goto __pyx_L5; } __pyx_L5:; } }
+033: if self.enc_fd >= 0:
__pyx_t_1 = ((__pyx_v_self->enc_fd >= 0) != 0); if (__pyx_t_1) { /* … */ } }
+034: close(self.enc_fd)
(void)(close(__pyx_v_self->enc_fd));
035:
+036: def __status__(self):
/* Python wrapper */ static PyObject *__pyx_pw_3bsd_9enclosure_9Enclosure_7__status__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static PyObject *__pyx_pw_3bsd_9enclosure_9Enclosure_7__status__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__status__ (wrapper)", 0); __pyx_r = __pyx_pf_3bsd_9enclosure_9Enclosure_6__status__(((struct __pyx_obj_3bsd_9enclosure_Enclosure *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_3bsd_9enclosure_9Enclosure_6__status__(struct __pyx_obj_3bsd_9enclosure_Enclosure *__pyx_v_self) { encioc_string_t __pyx_v_enc_name; encioc_string_t __pyx_v_enc_id; encioc_element_t *__pyx_v_objp; encioc_elm_status_t __pyx_v_ob; encioc_elm_desc_t __pyx_v_objd; encioc_elm_devnames_t __pyx_v_objdn; unsigned char __pyx_v__enc_name[32]; unsigned char __pyx_v__enc_id[32]; int __pyx_v_res; int __pyx_v_num_elms; int __pyx_v_elm_name_size; u_char __pyx_v_estat; struct __pyx_t_3bsd_3ses_elm_info_t *__pyx_v_elm_info; int __pyx_v_i; PyObject *__pyx_v_enc_info = NULL; long __pyx_7genexpr__pyx_v_j; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__status__", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_9); __Pyx_XDECREF(__pyx_t_10); __Pyx_XDECREF(__pyx_t_11); __Pyx_XDECREF(__pyx_t_12); __Pyx_XDECREF(__pyx_t_13); __Pyx_XDECREF(__pyx_t_15); __Pyx_XDECREF(__pyx_t_16); __Pyx_AddTraceback("bsd.enclosure.Enclosure.__status__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_enc_info); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
037: cdef ses.encioc_string_t enc_name
038: cdef ses.encioc_string_t enc_id
+039: cdef ses.encioc_element_t * objp = NULL
__pyx_v_objp = NULL;
040: cdef ses.encioc_elm_status_t ob
041: cdef ses.encioc_elm_desc_t objd
042: cdef ses.encioc_elm_devnames_t objdn
043: cdef unsigned char _enc_name[32]
044: cdef unsigned char _enc_id[32]
+045: cdef int res = -1
__pyx_v_res = -1;
+046: cdef int num_elms = 0
__pyx_v_num_elms = 0;
+047: cdef int elm_name_size = 128
__pyx_v_elm_name_size = 0x80;
048: cdef ses.u_char estat
+049: cdef ses.elm_info_t * elm_info = NULL
__pyx_v_elm_info = NULL;
050:
+051: enc_name.bufsiz = sizeof(_enc_name)
__pyx_v_enc_name.bufsiz = (sizeof(__pyx_v__enc_name));
+052: enc_name.buf = &_enc_name[0]
__pyx_v_enc_name.buf = (&(__pyx_v__enc_name[0]));
+053: enc_id.bufsiz = sizeof(_enc_id)
__pyx_v_enc_id.bufsiz = (sizeof(__pyx_v__enc_id));
+054: enc_id.buf = &_enc_id[0]
__pyx_v_enc_id.buf = (&(__pyx_v__enc_id[0]));
+055: try:
/*try:*/ {
+056: with nogil:
{ #ifdef WITH_THREAD PyThreadState *_save; Py_UNBLOCK_THREADS __Pyx_FastGIL_Remember(); #endif /*try:*/ { /* … */ /*finally:*/ { /*normal exit:*/{ #ifdef WITH_THREAD __Pyx_FastGIL_Forget(); Py_BLOCK_THREADS #endif goto __pyx_L8; } __pyx_L7_error: { #ifdef WITH_THREAD __Pyx_FastGIL_Forget(); Py_BLOCK_THREADS #endif goto __pyx_L4_error; } __pyx_L8:; } }
057: # enclosure name
+058: res = ioctl(self.enc_fd, ses.ENCIOC_GETENCNAME, <ses.caddr_t>&enc_name)
__pyx_v_res = ioctl(__pyx_v_self->enc_fd, ENCIOC_GETENCNAME, ((caddr_t)(&__pyx_v_enc_name)));
+059: if res != 0:
__pyx_t_1 = ((__pyx_v_res != 0) != 0); if (__pyx_t_1) { /* … */ }
+060: raise RuntimeError('ioctl failed to get enclosure name')
{ #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); #endif /*try:*/ { __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 60, __pyx_L11_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 60, __pyx_L11_error) } /*finally:*/ { __pyx_L11_error: { #ifdef WITH_THREAD __Pyx_PyGILState_Release(__pyx_gilstate_save); #endif goto __pyx_L7_error; } } } /* … */ __pyx_tuple__2 = PyTuple_Pack(1, __pyx_kp_u_ioctl_failed_to_get_enclosure_na); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(0, 60, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__2); __Pyx_GIVEREF(__pyx_tuple__2);
061:
062: # enclosure id
+063: res = ioctl(self.enc_fd, ses.ENCIOC_GETENCID, <ses.caddr_t>&enc_id)
__pyx_v_res = ioctl(__pyx_v_self->enc_fd, ENCIOC_GETENCID, ((caddr_t)(&__pyx_v_enc_id)));
+064: if res != 0:
__pyx_t_1 = ((__pyx_v_res != 0) != 0); if (__pyx_t_1) { /* … */ }
+065: raise RuntimeError('ioctl failed to get enclosure id')
{ #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); #endif /*try:*/ { __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 65, __pyx_L15_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 65, __pyx_L15_error) } /*finally:*/ { __pyx_L15_error: { #ifdef WITH_THREAD __Pyx_PyGILState_Release(__pyx_gilstate_save); #endif goto __pyx_L7_error; } } } /* … */ __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_u_ioctl_failed_to_get_enclosure_id); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 65, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__3); __Pyx_GIVEREF(__pyx_tuple__3);
066:
067: # number of enclosure elements
+068: res = ioctl(self.enc_fd, ses.ENCIOC_GETNELM, <ses.caddr_t>&num_elms)
__pyx_v_res = ioctl(__pyx_v_self->enc_fd, ENCIOC_GETNELM, ((caddr_t)(&__pyx_v_num_elms)));
+069: if res < 0:
__pyx_t_1 = ((__pyx_v_res < 0) != 0); if (__pyx_t_1) { /* … */ }
+070: raise RuntimeError('ioctl failed to get number of elements')
{ #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); #endif /*try:*/ { __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 70, __pyx_L19_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 70, __pyx_L19_error) } /*finally:*/ { __pyx_L19_error: { #ifdef WITH_THREAD __Pyx_PyGILState_Release(__pyx_gilstate_save); #endif goto __pyx_L7_error; } } } /* … */ __pyx_tuple__4 = PyTuple_Pack(1, __pyx_kp_u_ioctl_failed_to_get_number_of_el); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(0, 70, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__4); __Pyx_GIVEREF(__pyx_tuple__4);
071:
072: # enclosure status
+073: res = ioctl(self.enc_fd, ses.ENCIOC_GETENCSTAT, <ses.caddr_t>&estat)
__pyx_v_res = ioctl(__pyx_v_self->enc_fd, ENCIOC_GETENCSTAT, ((caddr_t)(&__pyx_v_estat)));
+074: if res != 0:
__pyx_t_1 = ((__pyx_v_res != 0) != 0); if (__pyx_t_1) { /* … */ }
+075: raise RuntimeError('ioctl failed to get enclosure status')
{ #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); #endif /*try:*/ { __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 75, __pyx_L23_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 75, __pyx_L23_error) } /*finally:*/ { __pyx_L23_error: { #ifdef WITH_THREAD __Pyx_PyGILState_Release(__pyx_gilstate_save); #endif goto __pyx_L7_error; } } } /* … */ __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_u_ioctl_failed_to_get_enclosure_st); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 75, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__5); __Pyx_GIVEREF(__pyx_tuple__5);
076:
+077: objp = <ses.encioc_element_t*>calloc(num_elms, sizeof(ses.encioc_element_t))
__pyx_v_objp = ((encioc_element_t *)calloc(__pyx_v_num_elms, (sizeof(encioc_element_t))));
+078: if not objp:
__pyx_t_1 = ((!(__pyx_v_objp != 0)) != 0); if (__pyx_t_1) { /* … */ }
+079: raise MemoryError('calloc objp failed')
{ #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); #endif /*try:*/ { __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 79, __pyx_L27_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 79, __pyx_L27_error) } /*finally:*/ { __pyx_L27_error: { #ifdef WITH_THREAD __Pyx_PyGILState_Release(__pyx_gilstate_save); #endif goto __pyx_L7_error; } } } /* … */ __pyx_tuple__6 = PyTuple_Pack(1, __pyx_kp_u_calloc_objp_failed); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(0, 79, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__6); __Pyx_GIVEREF(__pyx_tuple__6);
080:
+081: elm_info = <ses.elm_info_t*>calloc(num_elms, sizeof(ses.elm_info_t))
__pyx_v_elm_info = ((struct __pyx_t_3bsd_3ses_elm_info_t *)calloc(__pyx_v_num_elms, (sizeof(struct __pyx_t_3bsd_3ses_elm_info_t))));
+082: if not elm_info:
__pyx_t_1 = ((!(__pyx_v_elm_info != 0)) != 0); if (__pyx_t_1) { /* … */ }
+083: raise MemoryError('calloc elm_info failed')
{ #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); #endif /*try:*/ { __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 83, __pyx_L31_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 83, __pyx_L31_error) } /*finally:*/ { __pyx_L31_error: { #ifdef WITH_THREAD __Pyx_PyGILState_Release(__pyx_gilstate_save); #endif goto __pyx_L7_error; } } } /* … */ __pyx_tuple__7 = PyTuple_Pack(1, __pyx_kp_u_calloc_elm_info_failed); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 83, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__7); __Pyx_GIVEREF(__pyx_tuple__7);
084:
+085: res = ioctl(self.enc_fd, ses.ENCIOC_GETELMMAP, <ses.caddr_t>objp)
__pyx_v_res = ioctl(__pyx_v_self->enc_fd, ENCIOC_GETELMMAP, ((caddr_t)__pyx_v_objp));
+086: if res < 0:
__pyx_t_1 = ((__pyx_v_res < 0) != 0); if (__pyx_t_1) { /* … */ }
+087: raise RuntimeError('ioctl failed to get enclosure element map')
{ #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); #endif /*try:*/ { __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 87, __pyx_L35_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 87, __pyx_L35_error) } /*finally:*/ { __pyx_L35_error: { #ifdef WITH_THREAD __Pyx_PyGILState_Release(__pyx_gilstate_save); #endif goto __pyx_L7_error; } } } /* … */ __pyx_tuple__8 = PyTuple_Pack(1, __pyx_kp_u_ioctl_failed_to_get_enclosure_el); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 87, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__8); __Pyx_GIVEREF(__pyx_tuple__8);
088:
089: # get each elements status and store in an array
+090: for i in range(num_elms):
__pyx_t_3 = __pyx_v_num_elms; __pyx_t_4 = __pyx_t_3; for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) { __pyx_v_i = __pyx_t_5;
+091: ob.elm_idx = objp[i].elm_idx
__pyx_t_6 = (__pyx_v_objp[__pyx_v_i]).elm_idx; __pyx_v_ob.elm_idx = __pyx_t_6;
+092: res = ioctl(self.enc_fd, ses.ENCIOC_GETELMSTAT, <ses.caddr_t>&ob)
__pyx_v_res = ioctl(__pyx_v_self->enc_fd, ENCIOC_GETELMSTAT, ((caddr_t)(&__pyx_v_ob)));
+093: if res < 0:
__pyx_t_1 = ((__pyx_v_res < 0) != 0); if (__pyx_t_1) { /* … */ }
+094: raise RuntimeError('ioctl failed to get element status')
{ #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); #endif /*try:*/ { __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 94, __pyx_L43_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 94, __pyx_L43_error) } /*finally:*/ { __pyx_L43_error: { #ifdef WITH_THREAD __Pyx_PyGILState_Release(__pyx_gilstate_save); #endif goto __pyx_L7_error; } } } /* … */ __pyx_tuple__9 = PyTuple_Pack(1, __pyx_kp_u_ioctl_failed_to_get_element_stat); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(0, 94, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__9); __Pyx_GIVEREF(__pyx_tuple__9);
095:
096: # copy out element id
+097: elm_info[i].idx = ob.elm_idx
__pyx_t_6 = __pyx_v_ob.elm_idx; (__pyx_v_elm_info[__pyx_v_i]).idx = __pyx_t_6;
098:
099: # copy out element type
+100: elm_info[i].elm_type = objp[i].elm_type
__pyx_t_7 = (__pyx_v_objp[__pyx_v_i]).elm_type; (__pyx_v_elm_info[__pyx_v_i]).elm_type = __pyx_t_7;
101:
102: # copy out element status (always size 4)
+103: elm_info[i].cstat[0] = ob.cstat[0]
((__pyx_v_elm_info[__pyx_v_i]).cstat[0]) = (__pyx_v_ob.cstat[0]);
+104: elm_info[i].cstat[1] = ob.cstat[1]
((__pyx_v_elm_info[__pyx_v_i]).cstat[1]) = (__pyx_v_ob.cstat[1]);
+105: elm_info[i].cstat[2] = ob.cstat[2]
((__pyx_v_elm_info[__pyx_v_i]).cstat[2]) = (__pyx_v_ob.cstat[2]);
+106: elm_info[i].cstat[3] = ob.cstat[3]
((__pyx_v_elm_info[__pyx_v_i]).cstat[3]) = (__pyx_v_ob.cstat[3]);
107:
+108: bzero(&objd, sizeof(objd))
bzero((&__pyx_v_objd), (sizeof(__pyx_v_objd)));
+109: objd.elm_idx = objp[i].elm_idx
__pyx_t_6 = (__pyx_v_objp[__pyx_v_i]).elm_idx; __pyx_v_objd.elm_idx = __pyx_t_6;
+110: objd.elm_desc_len = UINT16_MAX
__pyx_v_objd.elm_desc_len = UINT16_MAX;
+111: objd.elm_desc_str = <char*>calloc(UINT16_MAX, sizeof(char))
__pyx_v_objd.elm_desc_str = ((char *)calloc(UINT16_MAX, (sizeof(char))));
+112: elm_info[i].elm_desc_str = objd.elm_desc_str
__pyx_t_8 = __pyx_v_objd.elm_desc_str; (__pyx_v_elm_info[__pyx_v_i]).elm_desc_str = __pyx_t_8;
+113: if not objd.elm_desc_str:
__pyx_t_1 = ((!(__pyx_v_objd.elm_desc_str != 0)) != 0); if (__pyx_t_1) { /* … */ }
+114: raise MemoryError('calloc objd.elm_desc_str failed')
{ #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); #endif /*try:*/ { __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 114, __pyx_L49_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 114, __pyx_L49_error) } /*finally:*/ { __pyx_L49_error: { #ifdef WITH_THREAD __Pyx_PyGILState_Release(__pyx_gilstate_save); #endif goto __pyx_L7_error; } } } /* … */ __pyx_tuple__10 = PyTuple_Pack(1, __pyx_kp_u_calloc_objd_elm_desc_str_failed); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(0, 114, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__10); __Pyx_GIVEREF(__pyx_tuple__10);
115: else:
+116: res = ioctl(self.enc_fd, ses.ENCIOC_GETELMDESC, <ses.caddr_t>&objd)
/*else*/ { __pyx_v_res = ioctl(__pyx_v_self->enc_fd, ENCIOC_GETELMDESC, ((caddr_t)(&__pyx_v_objd)));
+117: if res < 0:
__pyx_t_1 = ((__pyx_v_res < 0) != 0); if (__pyx_t_1) { /* … */ } }
+118: raise RuntimeError('ioctl failed to get element description')
{ #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); #endif /*try:*/ { __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__11, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 118, __pyx_L55_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 118, __pyx_L55_error) } /*finally:*/ { __pyx_L55_error: { #ifdef WITH_THREAD __Pyx_PyGILState_Release(__pyx_gilstate_save); #endif goto __pyx_L7_error; } } } /* … */ __pyx_tuple__11 = PyTuple_Pack(1, __pyx_kp_u_ioctl_failed_to_get_element_desc); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(0, 118, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__11); __Pyx_GIVEREF(__pyx_tuple__11);
119:
+120: bzero(&objdn, sizeof(objdn))
bzero((&__pyx_v_objdn), (sizeof(__pyx_v_objdn)));
+121: objdn.elm_idx = objp[i].elm_idx
__pyx_t_6 = (__pyx_v_objp[__pyx_v_i]).elm_idx; __pyx_v_objdn.elm_idx = __pyx_t_6;
+122: objdn.elm_names_size = elm_name_size
__pyx_v_objdn.elm_names_size = __pyx_v_elm_name_size;
+123: objdn.elm_devnames = <char*>calloc(elm_name_size, sizeof(char))
__pyx_v_objdn.elm_devnames = ((char *)calloc(__pyx_v_elm_name_size, (sizeof(char))));
+124: elm_info[i].elm_devnames = objdn.elm_devnames
__pyx_t_8 = __pyx_v_objdn.elm_devnames; (__pyx_v_elm_info[__pyx_v_i]).elm_devnames = __pyx_t_8;
+125: if not objdn.elm_devnames:
__pyx_t_1 = ((!(__pyx_v_objdn.elm_devnames != 0)) != 0); if (__pyx_t_1) { /* … */ }
+126: raise MemoryError('calloc elm_devnames failed')
{ #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); #endif /*try:*/ { __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 126, __pyx_L61_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 126, __pyx_L61_error) } /*finally:*/ { __pyx_L61_error: { #ifdef WITH_THREAD __Pyx_PyGILState_Release(__pyx_gilstate_save); #endif goto __pyx_L7_error; } } } /* … */ __pyx_tuple__12 = PyTuple_Pack(1, __pyx_kp_u_calloc_elm_devnames_failed); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(0, 126, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__12); __Pyx_GIVEREF(__pyx_tuple__12);
127: else:
128: # apparently this isn't critical and can return -1
129: # so we ignore the returned value
+130: ioctl(self.enc_fd, ses.ENCIOC_GETELMDEVNAMES, <ses.caddr_t>&objdn)
/*else*/ { (void)(ioctl(__pyx_v_self->enc_fd, ENCIOC_GETELMDEVNAMES, ((caddr_t)(&__pyx_v_objdn)))); } } }
131:
132: enc_info = {
+133: 'name': '',
__pyx_t_2 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 133, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_name, __pyx_kp_u__13) < 0) __PYX_ERR(0, 133, __pyx_L4_error) if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_id, __pyx_kp_u__13) < 0) __PYX_ERR(0, 133, __pyx_L4_error) __pyx_t_9 = PySet_New(0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 135, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_9); if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_status, __pyx_t_9) < 0) __PYX_ERR(0, 133, __pyx_L4_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
134: 'id': '',
135: 'status': set(),
+136: 'elements': {},
__pyx_t_9 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 136, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_9); if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_elements, __pyx_t_9) < 0) __PYX_ERR(0, 133, __pyx_L4_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_v_enc_info = ((PyObject*)__pyx_t_2); __pyx_t_2 = 0;
137: }
138:
139: # pull out enclosure name and id
+140: enc_info['name'] = enc_name.buf.strip()
__pyx_t_9 = __Pyx_PyUnicode_FromCString(__pyx_v_enc_name.buf); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 140, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_strip); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 140, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_10))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_10); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_10, function); } } __pyx_t_2 = (__pyx_t_9) ? __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_9) : __Pyx_PyObject_CallNoArg(__pyx_t_10); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 140, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; if (unlikely(PyDict_SetItem(__pyx_v_enc_info, __pyx_n_u_name, __pyx_t_2) < 0)) __PYX_ERR(0, 140, __pyx_L4_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+141: enc_info['id'] = enc_id.buf.strip()
__pyx_t_10 = __Pyx_PyUnicode_FromCString(__pyx_v_enc_id.buf); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 141, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_strip); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 141, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_10 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) { __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9); if (likely(__pyx_t_10)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_9, function); } } __pyx_t_2 = (__pyx_t_10) ? __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_10) : __Pyx_PyObject_CallNoArg(__pyx_t_9); __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 141, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(PyDict_SetItem(__pyx_v_enc_info, __pyx_n_u_id, __pyx_t_2) < 0)) __PYX_ERR(0, 141, __pyx_L4_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
142:
143: # pull out enclosure status
+144: if estat == 0:
__pyx_t_1 = ((__pyx_v_estat == 0) != 0); if (__pyx_t_1) { /* … */ goto __pyx_L63; }
+145: enc_info['status'].add('OK')
__pyx_t_9 = __Pyx_PyDict_GetItem(__pyx_v_enc_info, __pyx_n_u_status); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 145, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_add); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 145, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_10))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_10); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_10, function); } } __pyx_t_2 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_10, __pyx_t_9, __pyx_n_u_OK) : __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_n_u_OK); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 145, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
146: else:
+147: if (estat & ses.SES_ENCSTAT_INFO):
/*else*/ { __pyx_t_1 = ((__pyx_v_estat & SES_ENCSTAT_INFO) != 0); if (__pyx_t_1) { /* … */ }
+148: enc_info['status'].add('INFO')
__pyx_t_10 = __Pyx_PyDict_GetItem(__pyx_v_enc_info, __pyx_n_u_status); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 148, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_add); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 148, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_10 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) { __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9); if (likely(__pyx_t_10)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_9, function); } } __pyx_t_2 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_10, __pyx_n_u_INFO) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_n_u_INFO); __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 148, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+149: if (estat & ses.SES_ENCSTAT_NONCRITICAL):
__pyx_t_1 = ((__pyx_v_estat & SES_ENCSTAT_NONCRITICAL) != 0); if (__pyx_t_1) { /* … */ }
+150: enc_info['status'].add('NONCRITICAL')
__pyx_t_9 = __Pyx_PyDict_GetItem(__pyx_v_enc_info, __pyx_n_u_status); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 150, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_add); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 150, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_10))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_10); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_10, function); } } __pyx_t_2 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_10, __pyx_t_9, __pyx_n_u_NONCRITICAL) : __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_n_u_NONCRITICAL); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 150, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+151: if (estat & ses.SES_ENCSTAT_CRITICAL):
__pyx_t_1 = ((__pyx_v_estat & SES_ENCSTAT_CRITICAL) != 0); if (__pyx_t_1) { /* … */ }
+152: enc_info['status'].add('CRITICAL')
__pyx_t_10 = __Pyx_PyDict_GetItem(__pyx_v_enc_info, __pyx_n_u_status); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 152, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_add); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 152, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_10 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) { __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9); if (likely(__pyx_t_10)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_9, function); } } __pyx_t_2 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_10, __pyx_n_u_CRITICAL) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_n_u_CRITICAL); __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 152, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+153: if (estat & ses.SES_ENCSTAT_UNRECOV):
__pyx_t_1 = ((__pyx_v_estat & SES_ENCSTAT_UNRECOV) != 0); if (__pyx_t_1) { /* … */ } } __pyx_L63:;
+154: enc_info['status'].add('UNRECOV')
__pyx_t_9 = __Pyx_PyDict_GetItem(__pyx_v_enc_info, __pyx_n_u_status); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 154, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_add); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 154, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_10))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_10); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_10, function); } } __pyx_t_2 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_10, __pyx_t_9, __pyx_n_u_UNRECOV) : __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_n_u_UNRECOV); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 154, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
155:
156: # pull out enclosure element info
+157: for i in range(num_elms):
__pyx_t_3 = __pyx_v_num_elms; __pyx_t_4 = __pyx_t_3; for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) { __pyx_v_i = __pyx_t_5;
+158: enc_info['elements'].update({
__pyx_t_10 = __Pyx_PyDict_GetItem(__pyx_v_enc_info, __pyx_n_u_elements); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 158, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_update); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 158, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+159: elm_info[i].idx: {
__pyx_t_10 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 159, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_11 = __Pyx_PyInt_From_unsigned_int((__pyx_v_elm_info[__pyx_v_i]).idx); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 159, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_11);
+160: 'type': elm_info[i].elm_type,
__pyx_t_12 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 160, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_13 = __Pyx_PyInt_From_elm_type_t((__pyx_v_elm_info[__pyx_v_i]).elm_type); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 160, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_13); if (PyDict_SetItem(__pyx_t_12, __pyx_n_u_type, __pyx_t_13) < 0) __PYX_ERR(0, 160, __pyx_L4_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; { /* enter inner scope */
+161: 'status': [elm_info[i].cstat[j] for j in range(4)],
__pyx_t_13 = PyList_New(0); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 161, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_13); for (__pyx_t_14 = 0; __pyx_t_14 < 4; __pyx_t_14+=1) { __pyx_7genexpr__pyx_v_j = __pyx_t_14; __pyx_t_15 = __Pyx_PyInt_From_unsigned_char(((__pyx_v_elm_info[__pyx_v_i]).cstat[__pyx_7genexpr__pyx_v_j])); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 161, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_15); if (unlikely(__Pyx_ListComp_Append(__pyx_t_13, (PyObject*)__pyx_t_15))) __PYX_ERR(0, 161, __pyx_L4_error) __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; } } /* exit inner scope */ if (PyDict_SetItem(__pyx_t_12, __pyx_n_u_status, __pyx_t_13) < 0) __PYX_ERR(0, 160, __pyx_L4_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+162: 'descriptor': elm_info[i].elm_desc_str.strip(),
__pyx_t_15 = __Pyx_PyUnicode_FromString((__pyx_v_elm_info[__pyx_v_i]).elm_desc_str); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 162, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_15); __pyx_t_16 = __Pyx_PyObject_GetAttrStr(__pyx_t_15, __pyx_n_s_strip); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 162, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_16); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __pyx_t_15 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_16))) { __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_16); if (likely(__pyx_t_15)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_16); __Pyx_INCREF(__pyx_t_15); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_16, function); } } __pyx_t_13 = (__pyx_t_15) ? __Pyx_PyObject_CallOneArg(__pyx_t_16, __pyx_t_15) : __Pyx_PyObject_CallNoArg(__pyx_t_16); __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 162, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; if (PyDict_SetItem(__pyx_t_12, __pyx_n_u_descriptor, __pyx_t_13) < 0) __PYX_ERR(0, 160, __pyx_L4_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+163: 'dev': elm_info[i].elm_devnames.strip(),
__pyx_t_16 = __Pyx_PyUnicode_FromString((__pyx_v_elm_info[__pyx_v_i]).elm_devnames); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 163, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_16); __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_16, __pyx_n_s_strip); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 163, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_15); __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __pyx_t_16 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_15))) { __pyx_t_16 = PyMethod_GET_SELF(__pyx_t_15); if (likely(__pyx_t_16)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_15); __Pyx_INCREF(__pyx_t_16); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_15, function); } } __pyx_t_13 = (__pyx_t_16) ? __Pyx_PyObject_CallOneArg(__pyx_t_15, __pyx_t_16) : __Pyx_PyObject_CallNoArg(__pyx_t_15); __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 163, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; if (PyDict_SetItem(__pyx_t_12, __pyx_n_u_dev, __pyx_t_13) < 0) __PYX_ERR(0, 160, __pyx_L4_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (PyDict_SetItem(__pyx_t_10, __pyx_t_11, __pyx_t_12) < 0) __PYX_ERR(0, 159, __pyx_L4_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_12 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) { __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_9); if (likely(__pyx_t_12)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); __Pyx_INCREF(__pyx_t_12); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_9, function); } } __pyx_t_2 = (__pyx_t_12) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_12, __pyx_t_10) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_10); __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 158, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; }
164: }
165: })
+166: return enc_info
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_enc_info); __pyx_r = __pyx_v_enc_info; goto __pyx_L3_return; }
167: finally:
+168: with nogil:
/*finally:*/ { __pyx_L4_error:; /*exception exit:*/{ __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_21, &__pyx_t_22, &__pyx_t_23); if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20) < 0)) __Pyx_ErrFetch(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20); __Pyx_XGOTREF(__pyx_t_18); __Pyx_XGOTREF(__pyx_t_19); __Pyx_XGOTREF(__pyx_t_20); __Pyx_XGOTREF(__pyx_t_21); __Pyx_XGOTREF(__pyx_t_22); __Pyx_XGOTREF(__pyx_t_23); __pyx_t_3 = __pyx_lineno; __pyx_t_4 = __pyx_clineno; __pyx_t_17 = __pyx_filename; { { #ifdef WITH_THREAD PyThreadState *_save; Py_UNBLOCK_THREADS __Pyx_FastGIL_Remember(); #endif /*try:*/ { /* … */ /*finally:*/ { /*normal exit:*/{ #ifdef WITH_THREAD __Pyx_FastGIL_Forget(); Py_BLOCK_THREADS #endif goto __pyx_L76; } __pyx_L76:; } } } if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_21); __Pyx_XGIVEREF(__pyx_t_22); __Pyx_XGIVEREF(__pyx_t_23); __Pyx_ExceptionReset(__pyx_t_21, __pyx_t_22, __pyx_t_23); } __Pyx_XGIVEREF(__pyx_t_18); __Pyx_XGIVEREF(__pyx_t_19); __Pyx_XGIVEREF(__pyx_t_20); __Pyx_ErrRestore(__pyx_t_18, __pyx_t_19, __pyx_t_20); __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_lineno = __pyx_t_3; __pyx_clineno = __pyx_t_4; __pyx_filename = __pyx_t_17; goto __pyx_L1_error; } __pyx_L3_return: { __pyx_t_23 = __pyx_r; __pyx_r = 0; { #ifdef WITH_THREAD PyThreadState *_save; Py_UNBLOCK_THREADS __Pyx_FastGIL_Remember(); #endif /*try:*/ { /* … */ /*finally:*/ { /*normal exit:*/{ #ifdef WITH_THREAD __Pyx_FastGIL_Forget(); Py_BLOCK_THREADS #endif goto __pyx_L79; } __pyx_L79:; } } __pyx_r = __pyx_t_23; __pyx_t_23 = 0; goto __pyx_L0; } }
+169: self.clean_up(num_elms, elm_info, objp)
((struct __pyx_vtabstruct_3bsd_9enclosure_Enclosure *)__pyx_v_self->__pyx_vtab)->clean_up(__pyx_v_self, __pyx_v_num_elms, __pyx_v_elm_info, __pyx_v_objp); } /* … */ ((struct __pyx_vtabstruct_3bsd_9enclosure_Enclosure *)__pyx_v_self->__pyx_vtab)->clean_up(__pyx_v_self, __pyx_v_num_elms, __pyx_v_elm_info, __pyx_v_objp); }
170:
+171: cdef void clean_up(self, int num_elms, ses.elm_info_t *elm_info, ses.encioc_element_t *objp) nogil:
static void __pyx_f_3bsd_9enclosure_9Enclosure_clean_up(CYTHON_UNUSED struct __pyx_obj_3bsd_9enclosure_Enclosure *__pyx_v_self, int __pyx_v_num_elms, struct __pyx_t_3bsd_3ses_elm_info_t *__pyx_v_elm_info, encioc_element_t *__pyx_v_objp) { int __pyx_v_i; /* … */ /* function exit code */ }
172: cdef int i;
+173: if objp != NULL:
__pyx_t_1 = ((__pyx_v_objp != NULL) != 0); if (__pyx_t_1) { /* … */ }
+174: free(objp)
free(__pyx_v_objp);
175:
+176: if elm_info != NULL:
__pyx_t_1 = ((__pyx_v_elm_info != NULL) != 0); if (__pyx_t_1) { /* … */ }
+177: for i in range(num_elms):
__pyx_t_2 = __pyx_v_num_elms; __pyx_t_3 = __pyx_t_2; for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { __pyx_v_i = __pyx_t_4;
+178: free(elm_info[i].elm_desc_str)
free((__pyx_v_elm_info[__pyx_v_i]).elm_desc_str);
+179: free(elm_info[i].elm_devnames)
free((__pyx_v_elm_info[__pyx_v_i]).elm_devnames); }
+180: free(elm_info)
free(__pyx_v_elm_info);
181:
+182: cdef int setobj(self, long element, unsigned char *action) except -1:
static int __pyx_f_3bsd_9enclosure_9Enclosure_setobj(struct __pyx_obj_3bsd_9enclosure_Enclosure *__pyx_v_self, long __pyx_v_element, unsigned char *__pyx_v_action) { encioc_elm_status_t __pyx_v_obj; int __pyx_v_res; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("setobj", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("bsd.enclosure.Enclosure.setobj", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
183: cdef ses.encioc_elm_status_t obj
+184: cdef int res = -1
__pyx_v_res = -1;
185:
+186: obj.elm_idx = element
__pyx_v_obj.elm_idx = __pyx_v_element;
+187: obj.cstat = action
memcpy(&(__pyx_v_obj.cstat[0]), __pyx_v_action, sizeof(__pyx_v_obj.cstat[0]) * (4 - 0));
+188: with nogil:
{ #ifdef WITH_THREAD PyThreadState *_save; Py_UNBLOCK_THREADS __Pyx_FastGIL_Remember(); #endif /*try:*/ { /* … */ /*finally:*/ { /*normal exit:*/{ #ifdef WITH_THREAD __Pyx_FastGIL_Forget(); Py_BLOCK_THREADS #endif goto __pyx_L5; } __pyx_L4_error: { #ifdef WITH_THREAD __Pyx_FastGIL_Forget(); Py_BLOCK_THREADS #endif goto __pyx_L1_error; } __pyx_L5:; } }
+189: res = ioctl(self.enc_fd, ses.ENCIOC_SETELMSTAT, <ses.caddr_t>&obj)
__pyx_v_res = ioctl(__pyx_v_self->enc_fd, ENCIOC_SETELMSTAT, ((caddr_t)(&__pyx_v_obj)));
+190: if res < 0:
__pyx_t_1 = ((__pyx_v_res < 0) != 0); if (__pyx_t_1) { /* … */ } }
+191: raise RuntimeError('ioctl failed to set element status')
{ #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); #endif /*try:*/ { __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 191, __pyx_L8_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 191, __pyx_L8_error) } /*finally:*/ { __pyx_L8_error: { #ifdef WITH_THREAD __Pyx_PyGILState_Release(__pyx_gilstate_save); #endif goto __pyx_L4_error; } } } /* … */ __pyx_tuple__14 = PyTuple_Pack(1, __pyx_kp_u_ioctl_failed_to_set_element_stat); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(0, 191, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__14); __Pyx_GIVEREF(__pyx_tuple__14);
192:
+193: return res
__pyx_r = __pyx_v_res; goto __pyx_L0;
194:
+195: def identify(self, element):
/* Python wrapper */ static PyObject *__pyx_pw_3bsd_9enclosure_9Enclosure_9identify(PyObject *__pyx_v_self, PyObject *__pyx_v_element); /*proto*/ static PyObject *__pyx_pw_3bsd_9enclosure_9Enclosure_9identify(PyObject *__pyx_v_self, PyObject *__pyx_v_element) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("identify (wrapper)", 0); __pyx_r = __pyx_pf_3bsd_9enclosure_9Enclosure_8identify(((struct __pyx_obj_3bsd_9enclosure_Enclosure *)__pyx_v_self), ((PyObject *)__pyx_v_element)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_3bsd_9enclosure_9Enclosure_8identify(struct __pyx_obj_3bsd_9enclosure_Enclosure *__pyx_v_self, PyObject *__pyx_v_element) { unsigned char __pyx_v_cstat[4]; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("identify", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("bsd.enclosure.Enclosure.identify", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
+196: cdef unsigned char[4] cstat = [128, 0, 2, 0]
__pyx_t_1[0] = 0x80; __pyx_t_1[1] = 0; __pyx_t_1[2] = 2; __pyx_t_1[3] = 0; memcpy(&(__pyx_v_cstat[0]), __pyx_t_1, sizeof(__pyx_v_cstat[0]) * (4));
+197: return self.setobj(<long>element, cstat)
__Pyx_XDECREF(__pyx_r); __pyx_t_2 = __Pyx_PyInt_As_long(__pyx_v_element); if (unlikely((__pyx_t_2 == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 197, __pyx_L1_error) __pyx_t_3 = ((struct __pyx_vtabstruct_3bsd_9enclosure_Enclosure *)__pyx_v_self->__pyx_vtab)->setobj(__pyx_v_self, ((long)__pyx_t_2), __pyx_v_cstat); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 197, __pyx_L1_error) __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 197, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0;
198:
+199: def clear(self, element):
/* Python wrapper */ static PyObject *__pyx_pw_3bsd_9enclosure_9Enclosure_11clear(PyObject *__pyx_v_self, PyObject *__pyx_v_element); /*proto*/ static PyObject *__pyx_pw_3bsd_9enclosure_9Enclosure_11clear(PyObject *__pyx_v_self, PyObject *__pyx_v_element) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("clear (wrapper)", 0); __pyx_r = __pyx_pf_3bsd_9enclosure_9Enclosure_10clear(((struct __pyx_obj_3bsd_9enclosure_Enclosure *)__pyx_v_self), ((PyObject *)__pyx_v_element)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_3bsd_9enclosure_9Enclosure_10clear(struct __pyx_obj_3bsd_9enclosure_Enclosure *__pyx_v_self, PyObject *__pyx_v_element) { unsigned char __pyx_v_cstat[4]; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("clear", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("bsd.enclosure.Enclosure.clear", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
+200: cdef unsigned char[4] cstat = [128, 0, 0, 0]
__pyx_t_1[0] = 0x80; __pyx_t_1[1] = 0; __pyx_t_1[2] = 0; __pyx_t_1[3] = 0; memcpy(&(__pyx_v_cstat[0]), __pyx_t_1, sizeof(__pyx_v_cstat[0]) * (4));
+201: return self.setobj(<long>element, cstat)
__Pyx_XDECREF(__pyx_r); __pyx_t_2 = __Pyx_PyInt_As_long(__pyx_v_element); if (unlikely((__pyx_t_2 == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 201, __pyx_L1_error) __pyx_t_3 = ((struct __pyx_vtabstruct_3bsd_9enclosure_Enclosure *)__pyx_v_self->__pyx_vtab)->setobj(__pyx_v_self, ((long)__pyx_t_2), __pyx_v_cstat); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 201, __pyx_L1_error) __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 201, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0;
202:
+203: def fault(self, element):
/* Python wrapper */ static PyObject *__pyx_pw_3bsd_9enclosure_9Enclosure_13fault(PyObject *__pyx_v_self, PyObject *__pyx_v_element); /*proto*/ static PyObject *__pyx_pw_3bsd_9enclosure_9Enclosure_13fault(PyObject *__pyx_v_self, PyObject *__pyx_v_element) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fault (wrapper)", 0); __pyx_r = __pyx_pf_3bsd_9enclosure_9Enclosure_12fault(((struct __pyx_obj_3bsd_9enclosure_Enclosure *)__pyx_v_self), ((PyObject *)__pyx_v_element)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_3bsd_9enclosure_9Enclosure_12fault(struct __pyx_obj_3bsd_9enclosure_Enclosure *__pyx_v_self, PyObject *__pyx_v_element) { unsigned char __pyx_v_cstat[4]; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fault", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("bsd.enclosure.Enclosure.fault", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
+204: cdef unsigned char[4] cstat = [128, 0, 0, 32]
__pyx_t_1[0] = 0x80; __pyx_t_1[1] = 0; __pyx_t_1[2] = 0; __pyx_t_1[3] = 32; memcpy(&(__pyx_v_cstat[0]), __pyx_t_1, sizeof(__pyx_v_cstat[0]) * (4));
+205: return self.setobj(<long>element, cstat)
__Pyx_XDECREF(__pyx_r); __pyx_t_2 = __Pyx_PyInt_As_long(__pyx_v_element); if (unlikely((__pyx_t_2 == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 205, __pyx_L1_error) __pyx_t_3 = ((struct __pyx_vtabstruct_3bsd_9enclosure_Enclosure *)__pyx_v_self->__pyx_vtab)->setobj(__pyx_v_self, ((long)__pyx_t_2), __pyx_v_cstat); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 205, __pyx_L1_error) __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 205, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0;
206:
+207: def status(self):
/* Python wrapper */ static PyObject *__pyx_pw_3bsd_9enclosure_9Enclosure_15status(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static PyObject *__pyx_pw_3bsd_9enclosure_9Enclosure_15status(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("status (wrapper)", 0); __pyx_r = __pyx_pf_3bsd_9enclosure_9Enclosure_14status(((struct __pyx_obj_3bsd_9enclosure_Enclosure *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_3bsd_9enclosure_9Enclosure_14status(struct __pyx_obj_3bsd_9enclosure_Enclosure *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("status", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("bsd.enclosure.Enclosure.status", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
+208: return self.__status__()
__Pyx_XDECREF(__pyx_r); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_status_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 208, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 208, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;