Example #1
0
/* deserializes a single file from the binary. */
static size_t
deserialize_file(unsigned char* buffer, char* basedir, size_t offset)
{
  unsigned char* orig_buffer = buffer;
  size_t len;

  char* relpath = NULL;
  BUFFER_READ_STR2(relpath, len);
  assert(len > 0);

  char* content = NULL;
  BUFFER_READ_STR2(content, len);
  assert(len > 0);

  char *p = basedir + offset;
  strcpy(p, relpath);
  free(relpath);

  char *fullpath = basedir;
  if (pocl_exists(fullpath))
    goto RET;

  char* dir = strdup(basedir);
  char* dirpath = dirname(dir);
  if (!pocl_exists(dirpath))
    pocl_mkdir_p(dirpath);
  free(dir);

  pocl_write_file(fullpath, content, len, 0, 0);

RET:
  free(content);
  return (buffer - orig_buffer);
}
Example #2
0
int pocl_cache_append_to_buildlog(cl_program  program,
                                  unsigned    device_i,
                                  const char *content,
                                  size_t      size) {
    char buildlog_path[POCL_FILENAME_LENGTH];
    program_device_dir(buildlog_path, program,
                       device_i, POCL_BUILDLOG_FILENAME);

    return pocl_write_file(buildlog_path, content, size, 1, 1);
}
Example #3
0
int pocl_cache_write_descriptor(cl_program   program,
                                unsigned     device_i,
                                const char*  kernel_name,
                                const char*  content,
                                size_t       size) {
    char devdir[POCL_FILENAME_LENGTH];
    program_device_dir(devdir, program, device_i, "");

    char descriptor[POCL_FILENAME_LENGTH];
    int bytes_written = snprintf(descriptor, POCL_FILENAME_LENGTH,
                                 "%s/%s", devdir, kernel_name);
    assert(bytes_written > 0 && bytes_written < POCL_FILENAME_LENGTH);
    if (pocl_mkdir_p(descriptor))
        return 1;

    bytes_written = snprintf(descriptor, POCL_FILENAME_LENGTH,
                                 "%s/%s/descriptor.so.kernel_obj.c",
                                 devdir, kernel_name);
    assert(bytes_written > 0 && bytes_written < POCL_FILENAME_LENGTH);

    return pocl_write_file(descriptor, content, size, 0, 1);
}
Example #4
0
int pocl_cache_write_program_source(char *program_cl_path,
                                    cl_program program) {
    pocl_cache_mk_temp_name(program_cl_path);
    return pocl_write_file(program_cl_path, program->source,
                           strlen(program->source), 0, 0);
}