Searched refs:fda (Results 1 - 5 of 5) sorted by relevance

/linux-4.4.14/tools/lib/api/fd/
H A Darray.c13 void fdarray__init(struct fdarray *fda, int nr_autogrow) fdarray__init() argument
15 fda->entries = NULL; fdarray__init()
16 fda->priv = NULL; fdarray__init()
17 fda->nr = fda->nr_alloc = 0; fdarray__init()
18 fda->nr_autogrow = nr_autogrow; fdarray__init()
21 int fdarray__grow(struct fdarray *fda, int nr) fdarray__grow() argument
24 int nr_alloc = fda->nr_alloc + nr; fdarray__grow()
25 size_t psize = sizeof(fda->priv[0]) * nr_alloc; fdarray__grow()
27 struct pollfd *entries = realloc(fda->entries, size); fdarray__grow()
32 priv = realloc(fda->priv, psize); fdarray__grow()
38 fda->nr_alloc = nr_alloc; fdarray__grow()
39 fda->entries = entries; fdarray__grow()
40 fda->priv = priv; fdarray__grow()
46 struct fdarray *fda = calloc(1, sizeof(*fda)); fdarray__new() local
48 if (fda != NULL) { fdarray__new()
49 if (fdarray__grow(fda, nr_alloc)) { fdarray__new()
50 free(fda); fdarray__new()
51 fda = NULL; fdarray__new()
53 fda->nr_autogrow = nr_autogrow; fdarray__new()
57 return fda; fdarray__new()
60 void fdarray__exit(struct fdarray *fda) fdarray__exit() argument
62 free(fda->entries); fdarray__exit()
63 free(fda->priv); fdarray__exit()
64 fdarray__init(fda, 0); fdarray__exit()
67 void fdarray__delete(struct fdarray *fda) fdarray__delete() argument
69 fdarray__exit(fda); fdarray__delete()
70 free(fda); fdarray__delete()
73 int fdarray__add(struct fdarray *fda, int fd, short revents) fdarray__add() argument
75 int pos = fda->nr; fdarray__add()
77 if (fda->nr == fda->nr_alloc && fdarray__add()
78 fdarray__grow(fda, fda->nr_autogrow) < 0) fdarray__add()
81 fda->entries[fda->nr].fd = fd; fdarray__add()
82 fda->entries[fda->nr].events = revents; fdarray__add()
83 fda->nr++; fdarray__add()
87 int fdarray__filter(struct fdarray *fda, short revents, fdarray__filter() argument
88 void (*entry_destructor)(struct fdarray *fda, int fd)) fdarray__filter()
92 if (fda->nr == 0) fdarray__filter()
95 for (fd = 0; fd < fda->nr; ++fd) { fdarray__filter()
96 if (fda->entries[fd].revents & revents) { fdarray__filter()
98 entry_destructor(fda, fd); fdarray__filter()
104 fda->entries[nr] = fda->entries[fd]; fdarray__filter()
105 fda->priv[nr] = fda->priv[fd]; fdarray__filter()
111 return fda->nr = nr; fdarray__filter()
114 int fdarray__poll(struct fdarray *fda, int timeout) fdarray__poll() argument
116 return poll(fda->entries, fda->nr, timeout); fdarray__poll()
119 int fdarray__fprintf(struct fdarray *fda, FILE *fp) fdarray__fprintf() argument
121 int fd, printed = fprintf(fp, "%d [ ", fda->nr); fdarray__fprintf()
123 for (fd = 0; fd < fda->nr; ++fd) fdarray__fprintf()
124 printed += fprintf(fp, "%s%d", fd ? ", " : "", fda->entries[fd].fd); fdarray__fprintf()
H A Darray.h15 * I.e. using 'fda->priv[N].idx = * value' where N < fda->nr is ok,
16 * but doing 'fda->priv = malloc(M)' is not allowed.
28 void fdarray__init(struct fdarray *fda, int nr_autogrow);
29 void fdarray__exit(struct fdarray *fda);
32 void fdarray__delete(struct fdarray *fda);
34 int fdarray__add(struct fdarray *fda, int fd, short revents);
35 int fdarray__poll(struct fdarray *fda, int timeout);
36 int fdarray__filter(struct fdarray *fda, short revents,
37 void (*entry_destructor)(struct fdarray *fda, int fd));
38 int fdarray__grow(struct fdarray *fda, int extra);
39 int fdarray__fprintf(struct fdarray *fda, FILE *fp);
41 static inline int fdarray__available_entries(struct fdarray *fda) fdarray__available_entries() argument
43 return fda->nr_alloc - fda->nr; fdarray__available_entries()
/linux-4.4.14/tools/perf/tests/
H A Dfdarray.c5 static void fdarray__init_revents(struct fdarray *fda, short revents) fdarray__init_revents() argument
9 fda->nr = fda->nr_alloc; fdarray__init_revents()
11 for (fd = 0; fd < fda->nr; ++fd) { fdarray__init_revents()
12 fda->entries[fd].fd = fda->nr - fd; fdarray__init_revents()
13 fda->entries[fd].revents = revents; fdarray__init_revents()
17 static int fdarray__fprintf_prefix(struct fdarray *fda, const char *prefix, FILE *fp) fdarray__fprintf_prefix() argument
25 return printed + fdarray__fprintf(fda, fp); fdarray__fprintf_prefix()
31 struct fdarray *fda = fdarray__new(5, 5); test__fdarray__filter() local
33 if (fda == NULL) { test__fdarray__filter()
38 fdarray__init_revents(fda, POLLIN); test__fdarray__filter()
39 nr_fds = fdarray__filter(fda, POLLHUP, NULL); test__fdarray__filter()
40 if (nr_fds != fda->nr_alloc) { test__fdarray__filter()
42 nr_fds, fda->nr_alloc); test__fdarray__filter()
46 fdarray__init_revents(fda, POLLHUP); test__fdarray__filter()
47 nr_fds = fdarray__filter(fda, POLLHUP, NULL); test__fdarray__filter()
50 nr_fds, fda->nr_alloc); test__fdarray__filter()
54 fdarray__init_revents(fda, POLLHUP); test__fdarray__filter()
55 fda->entries[2].revents = POLLIN; test__fdarray__filter()
56 expected_fd[0] = fda->entries[2].fd; test__fdarray__filter()
58 pr_debug("\nfiltering all but fda->entries[2]:"); test__fdarray__filter()
59 fdarray__fprintf_prefix(fda, "before", stderr); test__fdarray__filter()
60 nr_fds = fdarray__filter(fda, POLLHUP, NULL); test__fdarray__filter()
61 fdarray__fprintf_prefix(fda, " after", stderr); test__fdarray__filter()
67 if (fda->entries[0].fd != expected_fd[0]) { test__fdarray__filter()
69 fda->entries[0].fd, expected_fd[0]); test__fdarray__filter()
73 fdarray__init_revents(fda, POLLHUP); test__fdarray__filter()
74 fda->entries[0].revents = POLLIN; test__fdarray__filter()
75 expected_fd[0] = fda->entries[0].fd; test__fdarray__filter()
76 fda->entries[3].revents = POLLIN; test__fdarray__filter()
77 expected_fd[1] = fda->entries[3].fd; test__fdarray__filter()
79 pr_debug("\nfiltering all but (fda->entries[0], fda->entries[3]):"); test__fdarray__filter()
80 fdarray__fprintf_prefix(fda, "before", stderr); test__fdarray__filter()
81 nr_fds = fdarray__filter(fda, POLLHUP, NULL); test__fdarray__filter()
82 fdarray__fprintf_prefix(fda, " after", stderr); test__fdarray__filter()
90 if (fda->entries[fd].fd != expected_fd[fd]) { test__fdarray__filter()
92 fda->entries[fd].fd, expected_fd[fd]); test__fdarray__filter()
101 fdarray__delete(fda); test__fdarray__filter()
109 struct fdarray *fda = fdarray__new(2, 2); test__fdarray__add() local
111 if (fda == NULL) { test__fdarray__add()
117 if (fda->entries[_idx].fd != _fd) { \ test__fdarray__add()
118 pr_debug("\n%d: fda->entries[%d](%d) != %d!", \ test__fdarray__add()
119 __LINE__, _idx, fda->entries[1].fd, _fd); \ test__fdarray__add()
122 if (fda->entries[_idx].events != (_revents)) { \ test__fdarray__add()
123 pr_debug("\n%d: fda->entries[%d].revents(%d) != %d!", \ test__fdarray__add()
124 __LINE__, _idx, fda->entries[_idx].fd, _revents); \ test__fdarray__add()
129 if (fdarray__add(fda, _fd, _revents) < 0) { \ test__fdarray__add()
130 pr_debug("\n%d: fdarray__add(fda, %d, %d) failed!", \ test__fdarray__add()
134 if (fda->nr != _nr) { \ test__fdarray__add()
135 pr_debug("\n%d: fdarray__add(fda, %d, %d)=%d != %d", \ test__fdarray__add()
136 __LINE__,_fd, _revents, fda->nr, _nr); \ test__fdarray__add()
144 fdarray__fprintf_prefix(fda, "before growing array", stderr); test__fdarray__add()
148 if (fda->entries == NULL) { test__fdarray__add()
149 pr_debug("\nfdarray__add(fda, 35, POLLHUP) should have allocated fda->pollfd!"); test__fdarray__add()
153 fdarray__fprintf_prefix(fda, "after 3rd add", stderr); test__fdarray__add()
157 fdarray__fprintf_prefix(fda, "after 4th add", stderr); test__fdarray__add()
171 fdarray__delete(fda); test__fdarray__add()
/linux-4.4.14/tools/perf/
H A Dbuiltin-kvm.c945 struct fdarray *fda = &kvm->evlist->pollfd; kvm_events_live_report() local
956 if (fda->entries[nr_stdin].revents & POLLIN) kvm_events_live_report()
960 err = fdarray__poll(fda, 100); kvm_events_live_report()
/linux-4.4.14/tools/perf/util/
H A Devlist.c515 static void perf_evlist__munmap_filtered(struct fdarray *fda, int fd) perf_evlist__munmap_filtered() argument
517 struct perf_evlist *evlist = container_of(fda, struct perf_evlist, pollfd); perf_evlist__munmap_filtered()
519 perf_evlist__mmap_put(evlist, fda->priv[fd].idx); perf_evlist__munmap_filtered()

Completed in 169 milliseconds