{"action":"created","issue":{"url":"https://api.github.com/repos/HelenOS/helenos/issues/40","repository_url":"https://api.github.com/repos/HelenOS/helenos","labels_url":"https://api.github.com/repos/HelenOS/helenos/issues/40/labels{/name}","comments_url":"https://api.github.com/repos/HelenOS/helenos/issues/40/comments","events_url":"https://api.github.com/repos/HelenOS/helenos/issues/40/events","html_url":"https://github.com/HelenOS/helenos/pull/40","id":329634530,"node_id":"MDExOlB1bGxSZXF1ZXN0MTkyODQzNzM0","number":40,"title":"Add notification queue to the async framework.","user":{"login":"le-jzr","id":501873,"node_id":"MDQ6VXNlcjUwMTg3Mw==","avatar_url":"https://avatars2.githubusercontent.com/u/501873?v=4","gravatar_id":"","url":"https://api.github.com/users/le-jzr","html_url":"https://github.com/le-jzr","followers_url":"https://api.github.com/users/le-jzr/followers","following_url":"https://api.github.com/users/le-jzr/following{/other_user}","gists_url":"https://api.github.com/users/le-jzr/gists{/gist_id}","starred_url":"https://api.github.com/users/le-jzr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/le-jzr/subscriptions","organizations_url":"https://api.github.com/users/le-jzr/orgs","repos_url":"https://api.github.com/users/le-jzr/repos","events_url":"https://api.github.com/users/le-jzr/events{/privacy}","received_events_url":"https://api.github.com/users/le-jzr/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2018-06-05T21:37:59Z","updated_at":"2018-06-06T15:34:07Z","closed_at":null,"author_association":"CONTRIBUTOR","pull_request":{"url":"https://api.github.com/repos/HelenOS/helenos/pulls/40","html_url":"https://github.com/HelenOS/helenos/pull/40","diff_url":"https://github.com/HelenOS/helenos/pull/40.diff","patch_url":"https://github.com/HelenOS/helenos/pull/40.patch"},"body":"Instead of running notification handlers in the same fibril that received it,\r\nforcing us to allocate a new fibril when the handler blocks, we instead queue\r\nthe notifications, and allow an arbitrary but fixed number of dedicated fibrils\r\nhandle them.\r\n\r\nAlthough a service can increase the number of handler fibrils to reduce latency,\r\nthere are now no dynamic allocations due to received notifications.\r\nWhen the same notification is received again while the older instance is still\r\nin queue, the new notification overwrites the old and increments a counter\r\nof received notifications.\r\n\r\nThe counter is currently unused, because passing it to the handler would\r\nrequire extensive changes to user code, but it should be straightforward\r\nto make use of it should the need arise."},"comment":{"url":"https://api.github.com/repos/HelenOS/helenos/issues/comments/395112713","html_url":"https://github.com/HelenOS/helenos/pull/40#issuecomment-395112713","issue_url":"https://api.github.com/repos/HelenOS/helenos/issues/40","id":395112713,"node_id":"MDEyOklzc3VlQ29tbWVudDM5NTExMjcxMw==","user":{"login":"le-jzr","id":501873,"node_id":"MDQ6VXNlcjUwMTg3Mw==","avatar_url":"https://avatars2.githubusercontent.com/u/501873?v=4","gravatar_id":"","url":"https://api.github.com/users/le-jzr","html_url":"https://github.com/le-jzr","followers_url":"https://api.github.com/users/le-jzr/followers","following_url":"https://api.github.com/users/le-jzr/following{/other_user}","gists_url":"https://api.github.com/users/le-jzr/gists{/gist_id}","starred_url":"https://api.github.com/users/le-jzr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/le-jzr/subscriptions","organizations_url":"https://api.github.com/users/le-jzr/orgs","repos_url":"https://api.github.com/users/le-jzr/repos","events_url":"https://api.github.com/users/le-jzr/events{/privacy}","received_events_url":"https://api.github.com/users/le-jzr/received_events","type":"User","site_admin":false},"created_at":"2018-06-06T15:34:07Z","updated_at":"2018-06-06T15:34:07Z","author_association":"CONTRIBUTOR","body":"> So I added `fibril_protocvar_t` that only interacts with `async_futex` instead of an arbitrary fibril mutex.\r\n\r\nIt occured to me that the same effect (locklessness on the producer side and immunity to lost signals) can be achieved with a completely ordinary counting semaphore."}}
{"actor":{"display_login":"le-jzr"}}