{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":14400181,"defaultBranch":"master","name":"osv","ownerLogin":"nyh","currentUserCanPush":false,"isFork":true,"isEmpty":false,"createdAt":"2013-11-14T16:17:51.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/584227?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1694591524.0","currentOid":""},"activityList":{"items":[{"before":null,"after":"870f2ae7bb82d27b00dd5b7ba9b784460fadf653","ref":"refs/heads/fix-1258","pushedAt":"2023-09-13T07:52:04.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"nyh","name":"Nadav Har'El","path":"/nyh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/584227?s=80&v=4"},"commit":{"message":"libc: fix bug in sem_unlink()\n\nThe function sem_unlink() should remove the name of a named semaphore,\nbut it should still be usable until its last user sem_close()es it.\n\nOur implementation of this was broken... The named_semaphore hash table\nheld unique_ptr, which means that as soon as an item\nwas removed from this hash table (when it was sem_unlink()ed), the\nunique_ptr was destroyed leading to the destruction of the semaphore\nitself.\n\nThe solution is for the hash table to hold pointers to indirect_semaphore,\nnot the indirect_semaphore itself. Before this patch, tst-semaphore.so\ncrashed, and after it it passes.\n\nWe could have perhaps achieved the same thing in a simpler way by\nusing std::shared_ptr instead of std::unique_ptr, which already holds\nits reference count, and sitting in the named_semaphore hash table\nwould just be yet another reference. Or alternatively, don't use\nunique_ptr at all and just use raw pointers. But let's leave such\ncleanups, to the future, if we want to do them at all.\n\nFixes #1258\n\nSigned-off-by: Nadav Har'El ","shortMessageHtmlLink":"libc: fix bug in sem_unlink()"}},{"before":"72ed41c6c967acd63fec4a5bdd138a3717ec2789","after":"e578f72968b6fae84cc36d62498e28cda4562d59","ref":"refs/heads/pr-fedora-38","pushedAt":"2023-09-12T07:42:57.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"nyh","name":"Nadav Har'El","path":"/nyh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/584227?s=80&v=4"},"commit":{"message":"libc: fix build on C++11 mode of recent gcc\n\nA recently-added named-semaphore feature used std::make_unique<>().\nIt's hard to remember now, but std::make_unique() wasn't a part of the\noriginal C++11, and was only added later, in C++14. Recent versions of\ngcc (such as 13.2.1) started warning when it is used in C++11 compilation\nmode, so the build failed.\n\nEventually, we should switch OSv to the C++14 (or even later) standards,\nbut I don't want to do that hastely now just to fix the build. So in\nthis patch I just do what people used to do before the advent of\nstd::make_unique (and we do many times in OSv): std::unique_ptr(new ...).\n\nSigned-off-by: Nadav Har'El ","shortMessageHtmlLink":"libc: fix build on C++11 mode of recent gcc"}},{"before":null,"after":"72ed41c6c967acd63fec4a5bdd138a3717ec2789","ref":"refs/heads/pr-fedora-38","pushedAt":"2023-09-10T09:16:00.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"nyh","name":"Nadav Har'El","path":"/nyh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/584227?s=80&v=4"},"commit":{"message":"tests: fix missing include\n\nThe test tests/tst-align.cc used intptr_t but forgot to include the\nappropriate header file (stdint.h). It got implicitly included on\nolder versions of stdlibc++ header files, but is no longer the case\nin Fedora 38, so let's include the missing header.\n\nSigned-off-by: Nadav Har'El ","shortMessageHtmlLink":"tests: fix missing include"}},{"before":null,"after":"b23e62f0587c1b7a78cffe7c4e67be9934cf8ac6","ref":"refs/heads/pr-pull-script","pushedAt":"2023-08-14T07:28:24.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"nyh","name":"Nadav Har'El","path":"/nyh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/584227?s=80&v=4"},"commit":{"message":"Add script for merging a github pull request\n\nAlthough github pull requests are convenient way to track pending\npatches and to review small or large patch sets, it's not obvious\nfor maintainers how to try such PRs locally, and also when\neventually deciding to merge the PR, github provides a \"merge\"\nbutton in its GUI with multiple problems:\n\n 1. It often botches the committer's address\n 2. It \"merges\" even single-patch PRs. This is not OSv's\n tradition - single patches should remain a single patch,\n not a merge of a single-patch branch.\n\nThe script in this patch, scripts/pull_github_pr.sh, solves\nboth problems: If the maintainer runs,\n\n scripts/pull_github_pr.sh 1245\n\nFetches PR number 1245 locally, you can then compile and test\nit yourself, and if you're pleased, finally push it.\n\nA complete session may look something like this:\n\n # get your working directory to modern master, as usual\n git checkout master\n git pull\n git submodule update --recursive\n\n # Pull pull request 1245:\n scripts/pull_github_pr.sh 1245\n # Now maybe compile OSv, test, it, and so on.\n # When you're pleased, and want to merge the PR, do:\n git push\n\nThis script is based on a similar script from the Scylla project.\n\nThe script works slightly differently for single-patch vs.\nmultiple-patch PRs:\n\n1. For a multiple-patch PR, the PR branch is merged. The\n first comment in the PR is used as the content of the\n merge commit so PR authors should edit this first comment\n to have good content.\n When this is merged into master, github automatically\n closes the PR as \"merged\".\n\n2. For a single-patch PR, the PR branch is *not* merged,\n instead the single patch is pushed as a single patch.\n Github doesn't realise that the branch was \"merged\"\n so instead the script adds a \"Closes\" tag to the\n commit message so that the PR is closed automatically\n when the result is merged.\n\nSigned-off-by: Nadav Har'El ","shortMessageHtmlLink":"Add script for merging a github pull request"}},{"before":"b5dd86888299a365c45b5ab6c9d03603bb6f5cc3","after":"7944338d5e702ea90cf6f871e32de167d9de2a29","ref":"refs/heads/rt-low-level","pushedAt":"2023-04-17T15:35:57.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"nyh","name":"Nadav Har'El","path":"/nyh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/584227?s=80&v=4"},"commit":{"message":"sched: low-level support for POSIX-compatible real-time scheduling\n\nThis patch adds \"real-time priority\" to OSv threads, which can be used\nto implement Posix's SCHED_FIFO and SCHED_RR scheduling policies.\n\nRefs #386. It doesn't yet \"Fixes\" it because this patch does not yet add\nthe Posix front-end to this implementation (sched_setscheduler() et al.) -\nthis will be added in a separate patch.\n\nWe add to each thread a _realtime._priority, an unsigned integer.\nNormal (non-real-time) threads have _realtime._priority of 0, and are\ntime-shared fairly as before, while realtime threads have\n_realtime._priority > 0, and preempt any thread with a lower realtime\npriority, including all normal threads.\n\nWe add a new API, t->set_realtime_priority(priority), to make a thread\nreal-time scheduled. The \"priority\" is an unsigned int as explained above\n(0 means normal thread). The resulting scheduling policy is fully\ncompatible with POSIX's SCHED_FIFO. This includes following the intricate\nrules on what happens to the running thread's place in the queue when there\nare several real-time threads with the same priority and the running\nthread yields, waits, or is preempted by a higher-priority thread.\nThis patch also adds an exercise for these cases in tests/misc-scheduler.cc.\n\nThis patch does not yet implement time slices as needed for supporting\nPOSIX's SCHED_RR policy. This patch already includes a time-slice setting\nAPI, t->set_realtime_time_slice(duration), but if used it produces a\nwarning message, and the scheduler currently ignores this setting.\nAdding support for real-time time slices is left for a future patch:\nTo implement time slices, we will need to keep in _realtime the total\ntime this thread ran since starting this slice (only zeroed when the\nthread is removed from the run queue), and each time we switch to a\nrealtime thread with timeslice >= 0, we'll set an appropriate timer\n(for timeslice minus already used time).\n\nI tested that although this patch adds code into the scheduler it does\nnot noticably slow down context switches of normal threads. E.g.,\ntests/misc-ctxsw.so measured colocated context switch time of 240ns\nbefore this patch, and exactly the same after it.\n\nWhile developing this patch I tested it using added workloads in\ntests/misc-scheduler.cc, included in this patch, but unfortunately\nthis is not a real regression test - it has no assertions and cannot\nautomatically detect failure (and, like all the \"misc-*\" tests, it\ndoesn't run automatically in \"make check\").\n\nSigned-off-by: Nadav Har'El ","shortMessageHtmlLink":"sched: low-level support for POSIX-compatible real-time scheduling"}},{"before":"723ed7cc0dc6813d47cb7e49c77618b719ce9b4c","after":"b5dd86888299a365c45b5ab6c9d03603bb6f5cc3","ref":"refs/heads/rt-low-level","pushedAt":"2023-03-29T09:21:06.269Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"nyh","name":"Nadav Har'El","path":"/nyh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/584227?s=80&v=4"},"commit":{"message":"sched: low-level support for POSIX-compatible real-time scheduling\n\nThis patch adds \"real-time priority\" to OSv threads, which can be used\nto implement Posix's SCHED_FIFO and SCHED_RR scheduling policies.\n\nRefs #386. It doesn't yet \"Fixes\" it because this patch does not yet add\nthe Posix front-end to this implementation (sched_setscheduler() et al.) -\nthis will be added in a separate patch.\n\nWe add to each thread a _realtime._priority, an unsigned integer.\nNormal (non-real-time) threads have _realtime._priority of 0, and are\ntime-shared fairly as before, while realtime threads have\n_realtime._priority > 0, and preempt any thread with a lower realtime\npriority, including all normal threads.\n\nWe add a new API, t->set_realtime_priority(priority), to make a thread\nreal-time scheduled. The \"priority\" is an unsigned int as explained above\n(0 means normal thread). The resulting scheduling policy is fully\ncompatible with POSIX's SCHED_FIFO. This includes following the intricate\nrules on what happens to the running thread's place in the queue when there\nare several real-time threads with the same priority and the running\nthread yields, waits, or is preempted by a higher-priority thread.\nThis patch also adds an exercise for these cases in tests/misc-scheduler.cc.\n\nThis patch does not yet implement time slices as needed for supporting\nPOSIX's SCHED_RR policy. This patch already includes a time-slice setting\nAPI, t->set_realtime_time_slice(duration), but if used it produces a\nwarning message, and the scheduler currently ignores this setting.\nAdding support for real-time time slices is left for a future patch:\nTo implement time slices, we will need to keep in _realtime the total\ntime this thread ran since starting this slice (only zeroed when the\nthread is removed from the run queue), and each time we switch to a\nrealtime thread with timeslice >= 0, we'll set an appropriate timer\n(for timeslice minus already used time).\n\nI tested that although this patch adds code into the scheduler it does\nnot noticably slow down context switches of normal threads. E.g.,\ntests/misc-ctxsw.so measured colocated context switch time of 308ns\nbefore this patch, and exactly the same after it.\n\nWhile developing this patch I tested it using added workloads in\ntests/misc-scheduler.cc, included in this patch, but unfortunately\nthis is not a real regression test - it has no assertions and cannot\nautomatically detect failure (and, like all the \"misc-*\" tests, it\ndoesn't run automatically in \"make check\").\n\nSigned-off-by: Nadav Har'El ","shortMessageHtmlLink":"sched: low-level support for POSIX-compatible real-time scheduling"}},{"before":"d356dc8bfdf57ad1ccc9bfbac47dcf51674826ba","after":"723ed7cc0dc6813d47cb7e49c77618b719ce9b4c","ref":"refs/heads/rt-low-level","pushedAt":"2023-03-29T09:19:33.791Z","pushType":"push","commitsCount":1,"pusher":{"login":"nyh","name":"Nadav Har'El","path":"/nyh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/584227?s=80&v=4"},"commit":{"message":"sched: implement POSIX-compatible real-time scheduling\n\nThis patch adds \"real-time priority\" to OSv threads, which can be used\nto implement Posix's SCHED_FIFO and SCHED_RR scheduling policies.\nThis patch does not yet add the Posix front-end to this implementation\n(sched_setscheduler() et al.) - this will be added in a separate patch.\n\nWe add to each thread a _realtime._priority, an unsigned integer.\nNormal (non-real-time) threads have _realtime._priority of 0, and are\ntime-shared fairly as before, while realtime threads have\n_realtime._priority > 0, and preempt any thread with a lower realtime\npriority, including all normal threads.\n\nWe add a new API, t->set_realtime_priority(priority), to make a thread\nreal-time scheduled. The \"priority\" is an unsigned int as explained above\n(0 means normal thread). The resulting scheduling policy is fully\ncompatible with POSIX's SCHED_FIFO. This includes following the intricate\nrules on what happens to the running thread's place in the queue when there\nare several real-time threads with the same priority and the running\nthread yields, waits, or is preempted by a higher-priority thread.\nThis patch also adds an exercise for these cases in tests/misc-scheduler.cc.\n\nThis patch does not yet implement time slices as needed for supporting\nPOSIX's SCHED_RR policy. This patch already includes a time-slice setting\nAPI, t->set_realtime_time_slice(duration), but if used it produces a\nwarning message, and the scheduler currently ignores this setting.\nAdding support for real-time time slices is left for a future patch:\nTo implement time slices, we will need to keep in _realtime the total\ntime this thread ran since starting this slice (only zeroed when the\nthread is removed from the run queue), and each time we switch to a\nrealtime thread with timeslice >= 0, we'll set an appropriate timer\n(for timeslice minus already used time).\n\nI tested that although this patch adds code into the scheduler it does\nnot noticably slow down context switches of normal threads. E.g.,\ntests/misc-ctxsw.so measured colocated context switch time of 308ns\nbefore this patch, and exactly the same after it.\n\nWhile developing this patch I tested it using added workloads in\ntests/misc-scheduler.cc, included in this patch, but unfortunately\nthis is not a real regression test - it has no assertions and cannot\nautomatically detect failure (and, like all the \"misc-*\" tests, it\ndoesn't run automatically in \"make check\").\n\nSigned-off-by: Nadav Har'El ","shortMessageHtmlLink":"sched: implement POSIX-compatible real-time scheduling"}},{"before":null,"after":"d356dc8bfdf57ad1ccc9bfbac47dcf51674826ba","ref":"refs/heads/rt-low-level","pushedAt":"2023-03-29T08:00:37.131Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"nyh","name":"Nadav Har'El","path":"/nyh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/584227?s=80&v=4"},"commit":{"message":"openjdk9 and above: fix makefile to enforce usr.manifest is re-generated everytime\n\nSigned-off-by: Waldemar Kozaczuk ","shortMessageHtmlLink":"openjdk9 and above: fix makefile to enforce usr.manifest is re-genera…"}}],"hasNextPage":false,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAADf3KtNAA","startCursor":null,"endCursor":null}},"title":"Activity · nyh/osv"}