nsresult testDecoderFromFiles(char * aCharset, char * aSrcFile, char * aResultFile) { // create converter CREATE_DECODER(aCharset); PRInt32 srcLen = GENERAL_BUFFER; char src[GENERAL_BUFFER]; PRInt32 expLen = GENERAL_BUFFER/2; PRUnichar exp[GENERAL_BUFFER/2]; res = loadBinaryFile(aSrcFile, src, &srcLen); if (NS_FAILED(res)) return res; res = loadUnicodeFile(aResultFile, exp, &expLen); if (NS_FAILED(res)) return res; // test converter - easy test res = testDecoder(dec, src, srcLen, exp, expLen, "dec"); // release converter NS_RELEASE(dec); if (NS_FAILED(res)) { return res; } else { printf("Test Passed.\n"); return NS_OK; } return NS_OK; }
// Create a program for all devices associated with the context. cl_program createProgramFromBinary(cl_context context, const char *binary_file_name, const cl_device_id *devices, unsigned num_devices) { // Early exit for potentially the most common way to fail: AOCX does not exist. if(!fileExists(binary_file_name)) { printf("AOCX file '%s' does not exist.\n", binary_file_name); checkError(CL_INVALID_PROGRAM, "Failed to load binary file"); } // Load the binary. size_t binary_size; scoped_array<unsigned char> binary(loadBinaryFile(binary_file_name, &binary_size)); if(binary == NULL) { checkError(CL_INVALID_PROGRAM, "Failed to load binary file"); } scoped_array<size_t> binary_lengths(num_devices); scoped_array<unsigned char *> binaries(num_devices); for(unsigned i = 0; i < num_devices; ++i) { binary_lengths[i] = binary_size; binaries[i] = binary; } cl_int status; scoped_array<cl_int> binary_status(num_devices); cl_program program = clCreateProgramWithBinary(context, num_devices, devices, binary_lengths, (const unsigned char **) binaries.get(), binary_status, &status); checkError(status, "Failed to create program with binary"); for(unsigned i = 0; i < num_devices; ++i) { checkError(binary_status[i], "Failed to load binary for device"); } return program; }
nsresult loadUnicodeFile(char * aFile, PRUnichar * aBuff, PRInt32 * aBuffLen) { PRInt32 buffLen = 2*(*aBuffLen); nsresult res = loadBinaryFile(aFile, (char *)aBuff, &buffLen); if (NS_FAILED(res)) return res; *aBuffLen = buffLen/2; return NS_OK; }
int startEmulator(int argc, char** argv) { char *path; int suppress = 1; switch (argc) { // case 0 for testing purposes case 0: path = (char *)argv; break; case 2: path = argv[1]; suppress = 0; break; default: fprintf(stderr, "No FILE provided.\n"); return NO_FILE_FOUND; } Arm *raspi = makeRaspi(); loadBinaryFile(path, mem.e); // begin the emulation runRaspi(raspi, 0, suppress); deallocRaspi(&raspi); return 0; }