Changeset 373 for trunk/openjdk/jdk/src/windows
- Timestamp:
- May 31, 2012, 5:49:53 PM (13 years ago)
- Location:
- trunk/openjdk/jdk/src/windows/native/java/io
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/openjdk/jdk/src/windows/native/java/io/FileDescriptor_md.c
r278 r373 55 55 JNIEXPORT jlong JNICALL 56 56 Java_java_io_FileDescriptor_set(JNIEnv *env, jclass fdClass, jint fd) { 57 SET_HANDLE(fd);57 RETURN_HANDLE(fd); 58 58 } 59 59 -
trunk/openjdk/jdk/src/windows/native/java/io/FileOutputStream_md.c
r278 r373 71 71 jboolean append = (*env)->GetBooleanField(env, this, fos_append); 72 72 FD fd = GET_FD(this, fos_fd); 73 if ( fd == -1) {73 if (!VALID_FD(fd)) { 74 74 JNU_ThrowIOException(env, "Stream Closed"); 75 75 return; … … 88 88 jboolean append = (*env)->GetBooleanField(env, this, fos_append); 89 89 FD fd = GET_FD(this, fos_fd); 90 if ( fd == -1) {90 if (!VALID_FD(fd)) { 91 91 JNU_ThrowIOException(env, "Stream Closed"); 92 92 return; -
trunk/openjdk/jdk/src/windows/native/java/io/io_util_md.c
r330 r373 533 533 { 534 534 FD fd = GET_FD(this, fid); 535 HANDLE h = (HANDLE)fd ;535 HANDLE h = (HANDLE)fd.handle; 536 536 537 537 if (h == INVALID_HANDLE_VALUE) { … … 548 548 549 549 if (CloseHandle(h) == 0) { /* Returns zero on failure */ 550 SET_FD(this, fd , fid); // restore fd550 SET_FD(this, fd.handle, fid); // restore fd 551 551 JNU_ThrowIOExceptionWithLastError(env, "close failed"); 552 552 } -
trunk/openjdk/jdk/src/windows/native/java/io/io_util_md.h
r278 r373 54 54 * Macros to use the right data type for file descriptors 55 55 */ 56 #define FD jlong 56 typedef struct __FD 57 { 58 jint fd; 59 jlong handle; 60 } _FD; 61 62 #define FD _FD 57 63 58 64 /* … … 61 67 * will simply return -1 to avoid crashing VM. 62 68 */ 69 63 70 #define SET_FD(this, fd, fid) \ 64 71 if ((*env)->GetObjectField(env, (this), (fid)) != NULL) \ … … 66 73 67 74 #define GET_FD(this, fid) \ 68 ((*env)->GetObjectField(env, (this), (fid)) == NULL) ? \ 69 -1 : (*env)->GetLongField(env, (*env)->GetObjectField(env, (this), (fid)), IO_handle_fdID) 75 { ((*env)->GetObjectField(env, (this), (fid)) == NULL ? \ 76 -1 : (*env)->GetIntField(env, (*env)->GetObjectField(env, (this), (fid)), IO_fd_fdID)), \ 77 ((*env)->GetObjectField(env, (this), (fid)) == NULL ? \ 78 -1 : (*env)->GetLongField(env, (*env)->GetObjectField(env, (this), (fid)), IO_handle_fdID)) } 79 80 #define ASSIGN_FD(fd, this, fid) \ 81 do { \ 82 fd.fd = ((*env)->GetObjectField(env, (this), (fid)) == NULL ? \ 83 -1 : (*env)->GetIntField(env, (*env)->GetObjectField(env, (this), (fid)), IO_fd_fdID)); \ 84 fd.handle = ((*env)->GetObjectField(env, (this), (fid)) == NULL ? \ 85 -1 : (*env)->GetLongField(env, (*env)->GetObjectField(env, (this), (fid)), IO_handle_fdID)); \ 86 } while(0) 87 88 #define VALID_FD(fd) (fd.handle != -1 || fd.fd != -1) 70 89 71 90 /* 72 91 * Macros to set/get fd when inside java.io.FileDescriptor 73 92 */ 74 #define THIS_FD(obj) (*env)->GetLongField(env, obj, IO_handle_fdID)93 #define THIS_FD(obj) { (*env)->GetLongField(env, obj, IO_fd_fdID), (*env)->GetLongField(env, obj, IO_handle_fdID) } 75 94 76 95 /* 77 96 * Route the routines away from HPI layer 78 97 */ 79 #define IO_Write handleWrite80 #define IO_Sync handleSync81 #define IO_Read handleRead82 #define IO_Lseek handleLseek83 #define IO_Available handleAvailable84 #define IO_SetLength handleSetLength98 #define IO_Write(fd,buf,len) (fd.handle != -1 ? handleWrite(fd.handle, buf, len) : JVM_Write(fd.fd, buf, len)) 99 #define IO_Sync(fd) (fd.handle != -1 ? handleSync(fd.handle) : JVM_Sync(fd.fd)) 100 #define IO_Read(fd,buf,len) (fd.handle != -1 ? handleRead(fd.handle, buf, len) : JVM_Read(fd.fd, buf, len)) 101 #define IO_Lseek(fd,offset,whence) (fd.handle != -1 ? handleLseek(fd.handle, offset, whence) : JVM_Lseek(fd.fd, offset, whence)) 102 #define IO_Available(fd,pbytes) (fd.handle != -1 ? handleAvailable(fd.handle, pbytes) : JVM_Available(fd.fd, pbytes)) 103 #define IO_SetLength(fd, length) (fd.handle != -1 ? handleSetLength(fd.handle, length) : JVM_SetLength(fd.fd, length)) 85 104 86 105 /* … … 88 107 * standard handles stdIn, stdOut, stdErr 89 108 */ 90 #define SET_HANDLE(fd) \109 #define RETURN_HANDLE(fd) \ 91 110 if (fd == 0) { \ 92 111 return (jlong)GetStdHandle(STD_INPUT_HANDLE); \
Note:
See TracChangeset
for help on using the changeset viewer.