Changeset 80e9e5e in mainline for uspace/app/taskdump/elf_core.c
- Timestamp:
- 2011-07-27T01:54:34Z (14 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 0837ab4
- Parents:
- c936c7f (diff), 75aa59a (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/taskdump/elf_core.c
rc936c7f r80e9e5e 67 67 68 68 static off64_t align_foff_up(off64_t, uintptr_t, size_t); 69 static int write_all(int, const void *, size_t);70 69 static int align_pos(int, size_t); 71 70 static int write_mem_area(int, as_area_info_t *, async_sess_t *); … … 100 99 101 100 int fd; 102 int rc;101 ssize_t rc; 103 102 unsigned int i; 104 103 … … 204 203 205 204 rc = write_all(fd, &elf_hdr, sizeof(elf_hdr)); 206 if (rc != EOK) {205 if (rc != sizeof(elf_hdr)) { 207 206 printf("Failed writing ELF header.\n"); 208 207 free(p_hdr); … … 212 211 for (i = 0; i < n_ph; ++i) { 213 212 rc = write_all(fd, &p_hdr[i], sizeof(p_hdr[i])); 214 if (rc != EOK) {213 if (rc != sizeof(p_hdr[i])) { 215 214 printf("Failed writing program header.\n"); 216 215 free(p_hdr); … … 233 232 234 233 rc = write_all(fd, ¬e, sizeof(elf_note_t)); 235 if (rc != EOK) {234 if (rc != sizeof(elf_note_t)) { 236 235 printf("Failed writing note header.\n"); 237 236 free(p_hdr); … … 240 239 241 240 rc = write_all(fd, "CORE", note.namesz); 242 if (rc != EOK) {241 if (rc != (ssize_t) note.namesz) { 243 242 printf("Failed writing note header.\n"); 244 243 free(p_hdr); … … 254 253 255 254 rc = write_all(fd, &pr_status, sizeof(elf_prstatus_t)); 256 if (rc != EOK) {255 if (rc != sizeof(elf_prstatus_t)) { 257 256 printf("Failed writing register data.\n"); 258 257 free(p_hdr); … … 304 303 size_t total; 305 304 uintptr_t addr; 306 int rc;305 ssize_t rc; 307 306 308 307 addr = area->start_addr; … … 318 317 319 318 rc = write_all(fd, buffer, to_copy); 320 if (rc != EOK) {319 if (rc != (ssize_t) to_copy) { 321 320 printf("Failed writing memory contents.\n"); 322 321 return EIO; … … 326 325 total += to_copy; 327 326 } 328 329 return EOK;330 }331 332 /** Write until the buffer is written in its entirety.333 *334 * This function fails if it cannot write exactly @a len bytes to the file.335 *336 * @param fd The file to write to.337 * @param buf Data, @a len bytes long.338 * @param len Number of bytes to write.339 *340 * @return EOK on error, return value from write() if writing341 * failed.342 */343 static int write_all(int fd, const void *data, size_t len)344 {345 int cnt = 0;346 347 do {348 data += cnt;349 len -= cnt;350 cnt = write(fd, data, len);351 } while (cnt > 0 && (len - cnt) > 0);352 353 if (cnt < 0)354 return cnt;355 356 if (len - cnt > 0)357 return EIO;358 327 359 328 return EOK;
Note:
See TracChangeset
for help on using the changeset viewer.