Ejemplo n.º 1
0
Archivo: dns.c Proyecto: LucidOne/Rovio
/* Thread destructor used to free stuff stored in per-thread data slot. */
static void
thread_destructor(CYG_ADDRWORD data)
{
    struct hostent *hent;
    hent = (struct hostent *)cyg_thread_get_data(ptdindex);
    if (hent)
        free_hent(hent);
    return;
    data=data;
}
Ejemplo n.º 2
0
Archivo: dns.c Proyecto: LucidOne/Rovio
/* If there is an answer to an old query, free the memory it uses. */
static void
free_stored_hent(void)
{
    struct hostent *hent;
    hent = (struct hostent *)cyg_thread_get_data(ptdindex);
    if (hent) {
        free_hent(hent);
        cyg_thread_set_data(ptdindex, (CYG_ADDRWORD)NULL);
        cyg_thread_rem_destructor( &thread_destructor, 0 );
    }
}
Ejemplo n.º 3
0
void
KernelLeaveTask
    (
        void
    )
{
    PKERNEL_TASK_MEM_BLOCK          pMem        = NULL;

    KernelAcquireSpinLock(&gMemBlockPoolLock);

    if ( TRUE )
    {
        pMem = gMemBlockPool.Next;

        while ( pMem )
        {
            gMemBlockPool.Next = pMem->Next;

            KernelFreeMemory(pMem);

            pMem = gMemBlockPool.Next;
        }

        gMemBlockPool.Prev = NULL;
        gMemBlockPool.Next = NULL;
    }

    if ( TRUE )
    {
        pMem = (PKERNEL_TASK_MEM_BLOCK)cyg_thread_get_data(0);

        if ( pMem )
        {
            gMemBlockPool.Prev = pMem;
            gMemBlockPool.Next = pMem;
        }
    }

    KernelReleaseSpinLock(&gMemBlockPoolLock);

    cyg_thread_exit();

    return;
}