VirtualBox

Ignore:
Timestamp:
Mar 9, 2011 5:05:12 PM (14 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
70454
Message:

IPRT: linux R0 threads

Location:
trunk/src/VBox/Runtime/r0drv/linux
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Runtime/r0drv/linux/the-linux-kernel.h

    r35662 r36233  
    119119#include <asm/div64.h>
    120120
     121#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0)
     122# include <linux/kthread.h>
     123#endif
     124
    121125#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0)
    122126# ifndef page_to_pfn
     
    364368#endif
    365369
    366 
    367 #endif
    368 
     370#endif
  • trunk/src/VBox/Runtime/r0drv/linux/thread2-r0drv-linux.c

    r28800 r36233  
    3838
    3939
    40 /** @todo Later.
    4140RTDECL(RTTHREAD) RTThreadSelf(void)
    4241{
    4342    return rtThreadGetByNative((RTNATIVETHREAD)current);
    4443}
    45 */
    4644
     45int rtThreadNativeInit(void)
     46{
     47    return VINF_SUCCESS;
     48}
     49
     50int rtThreadNativeSetPriority(PRTTHREADINT pThread, RTTHREADTYPE enmType)
     51{
     52    int Priority = 0;
     53    switch (enmType)
     54    {
     55        case RTTHREADTYPE_INFREQUENT_POLLER:    Priority = 9; break;
     56        case RTTHREADTYPE_EMULATION:            Priority = 7; break;
     57        case RTTHREADTYPE_DEFAULT:              Priority = 8; break;
     58        case RTTHREADTYPE_MSG_PUMP:             Priority = 9; break;
     59        case RTTHREADTYPE_IO:                   Priority = 10; break;
     60        case RTTHREADTYPE_TIMER:                Priority = 11; break;
     61
     62        default:
     63            AssertMsgFailed(("enmType=%d\n", enmType));
     64            return VERR_INVALID_PARAMETER;
     65    }
     66    return VINF_SUCCESS;
     67}
     68
     69int rtThreadNativeAdopt(PRTTHREADINT pThread)
     70{
     71    return VERR_NOT_IMPLEMENTED;
     72}
     73
     74
     75void rtThreadNativeDestroy(PRTTHREADINT pThread)
     76{
     77    NOREF(pThread);
     78}
     79
     80/**
     81 * Native kernel thread wrapper function.
     82 *
     83 * This will forward to rtThreadMain and do termination upon return.
     84 *
     85 * @param pvArg         Pointer to the argument package.
     86 */
     87static int rtThreadNativeMain(void *pvArg)
     88{
     89    PRTTHREADINT pThread = (PRTTHREADINT)pvArg;
     90
     91    rtThreadMain(pThread, (RTNATIVETHREAD)current, &pThread->szName[0]);
     92    return 0;
     93}
     94
     95
     96int rtThreadNativeCreate(PRTTHREADINT pThreadInt, PRTNATIVETHREAD pNativeThread)
     97{
     98    struct task_struct *NativeThread;
     99
     100    RT_ASSERT_PREEMPTIBLE();
     101
     102    NativeThread = kthread_run(rtThreadNativeMain, pThreadInt, "%s", pThreadInt->szName);
     103
     104    if (IS_ERR(NativeThread))
     105        return VERR_GENERAL_FAILURE;
     106
     107    *pNativeThread = (RTNATIVETHREAD)NativeThread;
     108    return VINF_SUCCESS;
     109}
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette