hackpthreads.c
上传用户:ladybrid91
上传日期:2007-01-04
资源大小:287k
文件大小:1k
源码类别:

Web服务器

开发平台:

Unix_Linux

  1. #include <pthread.h>
  2. #include <errno.h>
  3. #include <sys/mman.h>
  4. #define NOTOK -1
  5. #ifdef __sgi
  6. #  ifndef _POSIX1C
  7. /*
  8.  *  If using Proven's pThread implementation, he maps 
  9.  *  a different set of file descriptors to the actual ones
  10.  *  so we need to look up the relevant table
  11.  */
  12. extern struct fd_table_entry **fd_table;
  13. void *mmap(
  14.    void *addr,
  15.    size_t len,
  16.    int prot,
  17.    int flags,
  18.    int fd,
  19.    off_t off)
  20. {
  21. int fd_kern;
  22. void *memory;
  23. fd_kern = fd_table[fd]->fd.i;
  24. if (fd_kern == NOTOK)
  25. {
  26.    errno = EBADF;
  27.    return((caddr_t) NOTOK);
  28. }
  29. memory = (void *) _mmap(addr, len, prot, flags, fd_kern, off);
  30. return(memory);
  31. }
  32. int getdents(
  33.    int fd, 
  34.    struct dirent *buf,
  35.    unsigned nbyte)
  36. {
  37. int fd_kern;
  38. int bytesRead;
  39. fd_kern = fd_table[fd]->fd.i;
  40. if (fd_kern == NOTOK)
  41. {
  42.    errno = EBADF;
  43.    return(NOTOK);
  44. }
  45. bytesRead = _getdents(fd_kern, buf, nbyte);
  46. return(bytesRead);
  47. }
  48. #  endif
  49. #endif