projects
/
babeltrace.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add missing libpopt dependency in README file
[babeltrace.git]
/
formats
/
ctf
/
ctf.c
diff --git
a/formats/ctf/ctf.c
b/formats/ctf/ctf.c
index a418a6d507d4f1f33051495bdd3c95ada513f5ae..aae7187284bfe5317d2b4e8e338cf7c858087454 100644
(file)
--- a/
formats/ctf/ctf.c
+++ b/
formats/ctf/ctf.c
@@
-101,7
+101,6
@@
void ctf_init_pos(struct ctf_stream_pos *pos, int fd, int open_flags)
pos->flags = MAP_PRIVATE;
pos->parent.rw_table = read_dispatch_table;
break;
pos->flags = MAP_PRIVATE;
pos->parent.rw_table = read_dispatch_table;
break;
- case O_WRONLY:
case O_RDWR:
pos->prot = PROT_WRITE; /* Write has priority */
pos->flags = MAP_SHARED;
case O_RDWR:
pos->prot = PROT_WRITE; /* Write has priority */
pos->flags = MAP_SHARED;
@@
-138,9
+137,6
@@
void ctf_move_pos_slow(struct ctf_stream_pos *pos, size_t offset, int whence)
off_t off;
struct packet_index *index;
off_t off;
struct packet_index *index;
- /* Only allow random seek in read mode */
- assert(pos->prot != PROT_WRITE || whence == SEEK_CUR);
-
if (pos->prot == PROT_WRITE && pos->content_size_loc)
*pos->content_size_loc = pos->offset;
if (pos->prot == PROT_WRITE && pos->content_size_loc)
*pos->content_size_loc = pos->offset;
@@
-160,18
+156,23
@@
void ctf_move_pos_slow(struct ctf_stream_pos *pos, size_t offset, int whence)
* except to get exactly at the beginning of the next packet.
*/
if (pos->prot == PROT_WRITE) {
* except to get exactly at the beginning of the next packet.
*/
if (pos->prot == PROT_WRITE) {
- /* The writer will add padding */
- assert(pos->offset + offset == pos->packet_size);
-
- /*
- * Don't increment for initial stream move (only condition where
- * pos->offset can be 0.
- */
- if (pos->offset)
+ switch (whence) {
+ case SEEK_CUR:
+ /* The writer will add padding */
+ assert(pos->offset + offset == pos->packet_size);
pos->mmap_offset += WRITE_PACKET_LEN / CHAR_BIT;
pos->mmap_offset += WRITE_PACKET_LEN / CHAR_BIT;
+ break;
+ case SEEK_SET:
+ assert(offset == 0); /* only seek supported for now */
+ pos->cur_index = 0;
+ break;
+ default:
+ assert(0);
+ }
pos->content_size = -1U; /* Unknown at this point */
pos->packet_size = WRITE_PACKET_LEN;
pos->content_size = -1U; /* Unknown at this point */
pos->packet_size = WRITE_PACKET_LEN;
- off = posix_fallocate(pos->fd, pos->mmap_offset, pos->packet_size / CHAR_BIT);
+ off = posix_fallocate(pos->fd, pos->mmap_offset,
+ pos->packet_size / CHAR_BIT);
assert(off >= 0);
pos->offset = 0;
} else {
assert(off >= 0);
pos->offset = 0;
} else {
@@
-189,7
+190,7
@@
void ctf_move_pos_slow(struct ctf_stream_pos *pos, size_t offset, int whence)
assert(0);
}
if (pos->cur_index >= pos->packet_index->len) {
assert(0);
}
if (pos->cur_index >= pos->packet_index->len) {
- pos->offset =
-
EOF;
+ pos->offset = EOF;
return;
}
index = &g_array_index(pos->packet_index, struct packet_index,
return;
}
index = &g_array_index(pos->packet_index, struct packet_index,
@@
-337,7
+338,7
@@
int create_stream_packet_index(struct ctf_trace *td,
defint = container_of(field->definition, struct definition_integer, p);
assert(defint->declaration->signedness == FALSE);
if (defint->value._unsigned != CTF_MAGIC) {
defint = container_of(field->definition, struct definition_integer, p);
assert(defint->declaration->signedness == FALSE);
if (defint->value._unsigned != CTF_MAGIC) {
- fprintf(stdout, "[error] Invalid magic number %" PRIX64 " at packet %u (file offset %zd).\n",
+ fprintf(stdout, "[error] Invalid magic number
0x
%" PRIX64 " at packet %u (file offset %zd).\n",
defint->value._unsigned,
file_stream->pos.packet_index->len,
(ssize_t) pos->mmap_offset);
defint->value._unsigned,
file_stream->pos.packet_index->len,
(ssize_t) pos->mmap_offset);
@@
-564,7
+565,8
@@
int ctf_open_trace_read(struct ctf_trace *td, const char *path, int flags)
}
if (!diriter)
break;
}
if (!diriter)
break;
- if (!strcmp(diriter->d_name, ".")
+ /* Ignore hidden files, ., .. and metadata. */
+ if (!strncmp(diriter->d_name, ".", 1)
|| !strcmp(diriter->d_name, "..")
|| !strcmp(diriter->d_name, "metadata"))
continue;
|| !strcmp(diriter->d_name, "..")
|| !strcmp(diriter->d_name, "metadata"))
continue;
@@
-606,7
+608,7
@@
struct trace_descriptor *ctf_open_trace(const char *path, int flags)
if (ret)
goto error;
break;
if (ret)
goto error;
break;
- case O_
WRONLY
:
+ case O_
RDWR
:
fprintf(stdout, "[error] Opening CTF traces for output is not supported yet.\n");
goto error;
default:
fprintf(stdout, "[error] Opening CTF traces for output is not supported yet.\n");
goto error;
default:
This page took
0.024222 seconds
and
4
git commands to generate.