Hi Christos, This patch fixed the bug you found https://github.com/ycui1984/posixtestsuite/blob/master/patches/REALTIME_SIGNAL/0006-bug-fix-for-real-time-signals.patch
2016-07-25 21:33 GMT-07:00 Charles Cui <charles.cui1...@gmail.com>: > yeah, it seems correct, > my solution use another array, so space complicity is O(n), time > complicity is O(nlogn) for sorting and O(n) for copying to new array. Your > solution has space complicity O(1), time complicity is O(nlogn) + O(n^2). > > 2016-07-25 20:24 GMT-07:00 Christos Zoulas <chris...@zoulas.com>: > >> On Jul 25, 8:13pm, charles.cui1...@gmail.com (Charles Cui) wrote: >> -- Subject: Re: updates? >> >> | I have attached the test_signal v2 version, which fills the signal >> | reorder function. After we fix the bug that you found, >> | we can use this program to test. >> >> Great; I think that the following works too and does not use a temp >> array. I have not tested it, and perhaps yours is faster? >> >> christos >> >> /* >> * given a array of signals to be delivered in tosend of size len >> * place in ordered the signals to be delivered in delivery order >> * and return the number of signals that should be delivered >> */ >> static size_t >> sigorder(int *ordered, const int *tosend, size_t len) >> { >> if (len == 0) >> return len; >> >> memcpy(ordered, tosend, len * sizeof(*tosend)); >> qsort(ordered, len, sizeof(*ordered), compare); >> >> for (size_t i = 0; i < len - 1; i++) { >> if (ordered[i] >= SIGRTMIN || ordered[i] != ordered[i + >> 1]) >> continue; >> for (size_t j = i + 1; j < len - 1; j++) >> ordered[j] = ordered[j + 1]; >> len--; >> i--; >> } >> return len; >> } >> > >