int spufs_coredump_extra_notes_write(struct file *file, loff_t *foffset) { struct spu_context *ctx; int fd, j, rc; fd = 0; while ((ctx = coredump_next_context(&fd)) != NULL) { rc = spu_acquire_saved(ctx); if (rc) return rc; for (j = 0; spufs_coredump_read[j].name != NULL; j++) { rc = spufs_arch_write_note(ctx, j, file, fd, foffset); if (rc) { spu_release_saved(ctx); return rc; } } spu_release_saved(ctx); /* start searching the next fd next time */ fd++; } return 0; }
int spufs_coredump_extra_notes_size(void) { struct spu_context *ctx; int size = 0, rc, fd; fd = 0; while ((ctx = coredump_next_context(&fd)) != NULL) { rc = spu_acquire_saved(ctx); if (rc) break; rc = spufs_ctx_note_size(ctx, fd); spu_release_saved(ctx); if (rc < 0) break; size += rc; } return size; }