Staging
v0.8.1
https://github.com/python/cpython
Revision ddf343855d787520d1ac72c7dcfdeb91e72731da authored by Kristján Valur Jónsson on 08 May 2014, 10:36:27 UTC, committed by Kristján Valur Jónsson on 08 May 2014, 10:36:27 UTC
in order to have the same resolution as pthreads condition variables.
At the same time, it must be large enough to accept 31 bits of
milliseconds, which is the maximum timeout value in the windows API.
A PY_LONG_LONG of microseconds fullfills both requirements.
This closes issue #20737
1 parent 8577e5a
Raw File
Tip revision: ddf343855d787520d1ac72c7dcfdeb91e72731da authored by Kristján Valur Jónsson on 08 May 2014, 10:36:27 UTC
The PyCOND_TIMEDWAIT must use microseconds for the timeout argument
Tip revision: ddf3438
dynload_hpux.c

/* Support for dynamic loading of extension modules */

#include "dl.h"
#include <errno.h>

#include "Python.h"
#include "importdl.h"

#if defined(__hp9000s300)
#define FUNCNAME_PATTERN "_PyInit_%.200s"
#else
#define FUNCNAME_PATTERN "PyInit_%.200s"
#endif

const char *_PyImport_DynLoadFiletab[] = {SHLIB_EXT, NULL};

dl_funcptr _PyImport_GetDynLoadFunc(const char *shortname,
                                    const char *pathname, FILE *fp)
{
    dl_funcptr p;
    shl_t lib;
    int flags;
    char funcname[258];

    flags = BIND_FIRST | BIND_DEFERRED;
    if (Py_VerboseFlag) {
        flags = BIND_FIRST | BIND_IMMEDIATE |
            BIND_NONFATAL | BIND_VERBOSE;
        printf("shl_load %s\n",pathname);
    }
    lib = shl_load(pathname, flags, 0);
    /* XXX Chuck Blake once wrote that 0 should be BIND_NOSTART? */
    if (lib == NULL) {
        char buf[256];
        PyObject *pathname_ob = NULL;
        PyObject *buf_ob = NULL;
        PyObject *shortname_ob = NULL;

        if (Py_VerboseFlag)
            perror(pathname);
        PyOS_snprintf(buf, sizeof(buf), "Failed to load %.200s",
                      pathname);
        buf_ob = PyUnicode_FromString(buf);
        shortname_ob = PyUnicode_FromString(shortname);
        pathname_ob = PyUnicode_FromString(pathname);
        PyErr_SetImportError(buf_ob, shortname_ob, pathname_ob);
        Py_DECREF(buf_ob);
        Py_DECREF(shortname_ob);
        Py_DECREF(pathname_ob);
        return NULL;
    }
    PyOS_snprintf(funcname, sizeof(funcname), FUNCNAME_PATTERN, shortname);
    if (Py_VerboseFlag)
        printf("shl_findsym %s\n", funcname);
    if (shl_findsym(&lib, funcname, TYPE_UNDEFINED, (void *) &p) == -1) {
        shl_unload(lib);
        p = NULL;
    }
    if (p == NULL && Py_VerboseFlag)
        perror(funcname);

    return p;
}
back to top