| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173 | 
							- /* -*- mode:c; c-file-style:"k&r"; c-basic-offset: 4; tab-width:4; indent-tabs-mode:nil; mode:auto-fill; fill-column:78; -*- */
 
- /* vim: set ts=4 sw=4 et tw=78 fo=cqt wm=0: */
 
- #include "pal.h"
 
- #include "pal_debug.h"
 
- #include "api.h"
 
- #define NUM_TO_HEX(num) \
 
-     ((num) >= 10 ? 'a' + ((num) - 10) : '0' + (num))
 
- static __attribute__((noinline))
 
- void print_hex (char * fmt, const void * data, int len)
 
- {
 
-     char * buf = __alloca(len * 2 + 1);
 
-     buf[len * 2] = '\0';
 
-     for (int i = 0; i < len; i++) {
 
-         unsigned char b = ((unsigned char *)data)[i];
 
-         buf[i * 2] = NUM_TO_HEX(b >> 4);
 
-         buf[i * 2 + 1] = NUM_TO_HEX(b & 0xf);
 
-     }
 
-     pal_printf(fmt, buf);
 
- }
 
- int main (int argc, char ** argv, char ** envp)
 
- {
 
-     char buffer1[40], buffer2[40], buffer3[40];
 
-     int ret;
 
-     /* test regular file opening */
 
-     PAL_HANDLE file1 = DkStreamOpen("file:File",
 
-                                     PAL_ACCESS_RDWR, 0, 0, 0);
 
-     if (file1) {
 
-         pal_printf("File Open Test 1 OK\n");
 
-         /* test file read */
 
-         ret = DkStreamRead(file1, 0, 40, buffer1, NULL, 0);
 
-         if (ret > 0) {
 
-             buffer1[ret] = 0;
 
-             print_hex("Read Test 1 (0th - 40th): %s\n", buffer1, 40);
 
-         }
 
-         ret = DkStreamRead(file1, 0, 40, buffer1, NULL, 0);
 
-         if (ret > 0) {
 
-             buffer1[ret] = 0;
 
-             print_hex("Read Test 2 (0th - 40th): %s\n", buffer1, 40);
 
-         }
 
-         ret = DkStreamRead(file1, 200, 40, buffer2, NULL, 0);
 
-         if (ret > 0) {
 
-             buffer2[ret] = 0;
 
-             print_hex("Read Test 3 (200th - 240th): %s\n", buffer2, 40);
 
-         }
 
-         /* test file attribute query */
 
-         PAL_STREAM_ATTR attr1;
 
-         if (DkStreamAttributesQuerybyHandle(file1, &attr1))
 
-             pal_printf("Query by Handle: type = %d, size = %d\n",
 
-                        attr1.handle_type, attr1.pending_size);
 
-         /* test file map */
 
-         void * mem1 = (void *) DkStreamMap(file1, NULL,
 
-                                 PAL_PROT_READ | PAL_PROT_WRITECOPY, 0, 4096);
 
-         if (mem1) {
 
-             memcpy(buffer1, mem1, 40);
 
-             print_hex("Map Test 1 (0th - 40th): %s\n", buffer1, 40);
 
-             memcpy(buffer2, mem1 + 200, 40);
 
-             print_hex("Map Test 2 (200th - 240th): %s\n", buffer2, 40);
 
-             DkStreamUnmap(mem1, 4096);
 
-         } else {
 
-             pal_printf("Map Test 1 & 2: Failed to map buffer\n");
 
-         }
 
-         /* DEP 11/24/17: For SGX writecopy exercises a different path in the PAL */
 
-         void * mem2 = (void *) DkStreamMap(file1, NULL,
 
-                                 PAL_PROT_READ | PAL_PROT_WRITECOPY, 4096, 4096);
 
-         if (mem2) {
 
-             memcpy(buffer3, mem2, 40);
 
-             print_hex("Map Test 3 (4096th - 4136th): %s\n", buffer3, 40);
 
-             memcpy(buffer3, mem2 + 200, 40);
 
-             print_hex("Map Test 4 (4296th - 4336th): %s\n", buffer3, 40);
 
-             DkStreamUnmap(mem2, 4096);
 
-         }
 
-         DkObjectClose(file1);
 
-     }
 
-     PAL_HANDLE file2 = DkStreamOpen("file:File",
 
-                                     PAL_ACCESS_RDWR, 0, 0, 0);
 
-     if (file2) {
 
-         pal_printf("File Open Test 2 OK\n");
 
-         DkObjectClose(file2);
 
-     }
 
-     PAL_HANDLE file3 = DkStreamOpen("file:../regression/File",
 
-                                     PAL_ACCESS_RDWR, 0, 0, 0);
 
-     if (file3) {
 
-         pal_printf("File Open Test 3 OK\n");
 
-         DkObjectClose(file3);
 
-     }
 
-     PAL_STREAM_ATTR attr2;
 
-     if (DkStreamAttributesQuery("file:File", &attr2))
 
-         pal_printf("Query: type = %d, size = %d\n",
 
-                    attr2.handle_type, attr2.pending_size);
 
-     /* test regular file creation */
 
-     PAL_HANDLE file4 = DkStreamOpen("file:file_nonexist.tmp",
 
-                                     PAL_ACCESS_RDWR,
 
-                                     PAL_SHARE_OWNER_R|PAL_SHARE_OWNER_W,
 
-                                     PAL_CREAT_TRY|PAL_CREAT_ALWAYS, 0);
 
-     if (file4)
 
-         pal_printf("File Creation Test 1 OK\n");
 
-     PAL_HANDLE file5 = DkStreamOpen("file:file_nonexist.tmp",
 
-                                     PAL_ACCESS_RDWR,
 
-                                     PAL_SHARE_OWNER_R|PAL_SHARE_OWNER_W,
 
-                                     PAL_CREAT_TRY|PAL_CREAT_ALWAYS, 0);
 
-     if (file5) {
 
-         DkObjectClose(file5);
 
-     } else {
 
-         pal_printf("File Creation Test 2 OK\n");
 
-     }
 
-     PAL_HANDLE file6 = DkStreamOpen("file:file_nonexist.tmp",
 
-                                     PAL_ACCESS_RDWR,
 
-                                     PAL_SHARE_OWNER_R|PAL_SHARE_OWNER_W,
 
-                                     PAL_CREAT_TRY, 0);
 
-     if (file6) {
 
-         pal_printf("File Creation Test 3 OK\n");
 
-         DkObjectClose(file6);
 
-     }
 
-     if (file4) {
 
-         /* test file writing */
 
-         ret = DkStreamWrite(file4, 0, 40, buffer1, NULL);
 
-         if (ret < 0)
 
-             goto fail_writing;
 
-         ret = DkStreamWrite(file4, 0, 40, buffer2, NULL);
 
-         if (ret < 0)
 
-             goto fail_writing;
 
-         ret = DkStreamWrite(file4, 200, 40, buffer1, NULL);
 
-         if (ret < 0)
 
-             goto fail_writing;
 
-         /* test file truncate */
 
-         DkStreamSetLength(file4, pal_control.alloc_align);
 
- fail_writing:
 
-         DkObjectClose(file4);
 
-     }
 
-     PAL_HANDLE file7 = DkStreamOpen("file:file_delete.tmp",
 
-                                     PAL_ACCESS_RDONLY, 0, 0, 0);
 
-     if (file7) {
 
-         DkStreamDelete(file7, 0);
 
-         DkObjectClose(file7);
 
-     }
 
-     return 0;
 
- }
 
 
  |