VirtualBox

Changeset 2474 in kBuild for trunk/src/lib


Ignore:
Timestamp:
Jul 12, 2011 2:43:14 PM (13 years ago)
Author:
bird
Message:

adj.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/lib/test-eintr-bug-2.c

    r2472 r2474  
    88#include <sys/time.h>
    99#include <sys/stat.h>
     10#include <fcntl.h>
    1011#include <time.h>
    1112#include <stdio.h>
     
    1415#include <pthread.h>
    1516#include <signal.h>
     17#include <unistd.h>
    1618
    1719
     
    2123/** The number of signals. */
    2224static volatile long    g_cSigs = 0;
     25/** Number of signals received on threads other than the main one. */
     26static volatile long    g_cSigsOther = 0;
    2327/** Whether to shutdown or not. */
    2428static volatile int     g_fShutdown = 0;
     
    3034{
    3135    g_cSigs++;
     36    if (pthread_self() != g_hMainThread)
     37        g_cSigsOther++;
    3238
    3339    (void)iSig;
     
    4652static void *ThreadProc(void *pvIgnored)
    4753{
     54    int volatile i = 0;
    4855    while (!g_fShutdown)
    4956    {
    50         NanoSleep(850);
     57//        NanoSleep(850);
    5158        if (g_fShutdown)
    5259            break;
    5360
    5461        pthread_kill(g_hMainThread, SIGALRM);
     62        for (i = 6666; i > 0; i--)
     63            /* nothing */;
    5564    }
    5665    return NULL;
     
    101110    {
    102111        struct stat St;
     112        int fd;
    103113
    104114        rc = stat(argv[0], &St);
     
    110120            break;
    111121        }
     122       
     123        fd = open(szName, O_CREAT | O_RDWR, 0666);
     124        if (errno == EINTR && fd < 0)
     125        {
     126            printf("iteration %d: open: %u\n", i, errno);
     127            break;
     128        }
     129        close(fd);
     130        rc = unlink(szName);
     131        if (errno == EINTR && rc != 0)
     132        {
     133            printf("iteration %d: unlink: %u\n", i, errno);
     134            break;
     135        }
     136       
     137        /* Show progress info */
    112138        if ((i % 100000) == 0)
    113139        {
    114140            printf(".");
    115141            if ((i % 1000000) == 0)
    116                 printf("[%d/%ld]", i, g_cSigs);
     142                printf("[%d/%ld/%ld]\n", i, g_cSigs, g_cSigsOther);
    117143            fflush(stdout);
    118144        }
Note: See TracChangeset for help on using the changeset viewer.

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