[GHC] #10674: Expose OSThreadID and assorted functions from Haskell

#10674: Expose OSThreadID and assorted functions from Haskell -------------------------------------+------------------------------------- Reporter: Fuuzetsu | Owner: Type: feature | Status: new request | Priority: normal | Milestone: Component: Compiler | Version: 7.10.1 Keywords: | Operating System: Unknown/Multiple Architecture: | Type of failure: None/Unknown Unknown/Multiple | Test Case: | Blocked By: Blocking: | Related Tickets: Differential Revisions: | -------------------------------------+------------------------------------- Currently given two {{{ThreadId}}}s, there is no way to tell without FFI if they are running on the same OS thread. There is not even a way to ask what OS thread we are currently on: something like {{{myThreadId}}} except {{{myOsThreadId}}}. Currently to remedy this, the user has to effectively copy and paste parts of the internal rts files and use something like {{{.hsc}}} with CPP to get at this information. This is not really portable on the user side and requires nasty gutting. In the RTS the function we are interested in is at least {{{osThreadId}}}: at least with this function we can inspect current {{{OSThreadId}}} and communicate it out through an {{{MVar}}} or otherwise. So this is a feature request for an abstract type {{{OSThreadId}}} with instances of at least {{{Eq, Show}}} and a function {{{myOsThreadId :: IO OSThreadId}}}. Nice to have would be {{{osThreadId :: ThreadID -> IO OSThreadId}}} but not critical. If there is room for optimisation in GHC, functions like {{{sameOsThread :: ThreadId -> ThreadId -> IO Bool}}} would also be nice but again not critical. Not sure what to set in ticket meta-data so please change as appropriate. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/10674 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#10674: Expose OSThreadID and assorted functions from Haskell -------------------------------------+------------------------------------- Reporter: Fuuzetsu | Owner: Type: feature request | Status: new Priority: normal | Milestone: Component: Compiler | Version: 7.10.1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Revisions: -------------------------------------+------------------------------------- Description changed by Fuuzetsu: Old description:
Currently given two {{{ThreadId}}}s, there is no way to tell without FFI if they are running on the same OS thread. There is not even a way to ask what OS thread we are currently on: something like {{{myThreadId}}} except {{{myOsThreadId}}}.
Currently to remedy this, the user has to effectively copy and paste parts of the internal rts files and use something like {{{.hsc}}} with CPP to get at this information. This is not really portable on the user side and requires nasty gutting.
In the RTS the function we are interested in is at least {{{osThreadId}}}: at least with this function we can inspect current {{{OSThreadId}}} and communicate it out through an {{{MVar}}} or otherwise.
So this is a feature request for an abstract type {{{OSThreadId}}} with instances of at least {{{Eq, Show}}} and a function {{{myOsThreadId :: IO OSThreadId}}}.
Nice to have would be {{{osThreadId :: ThreadID -> IO OSThreadId}}} but not critical. If there is room for optimisation in GHC, functions like {{{sameOsThread :: ThreadId -> ThreadId -> IO Bool}}} would also be nice but again not critical.
Not sure what to set in ticket meta-data so please change as appropriate.
New description: Currently given two {{{ThreadId}}}s, there is no way to tell without FFI if they are running on the same OS thread. There is not even a way to ask what OS thread we are currently on: something like {{{myThreadId}}} except {{{myOsThreadId}}}. Currently to remedy this, the user has to effectively copy and paste parts of the internal rts files and use something like {{{.hsc}}} with CPP to get at this information. This is not really portable on the user side and requires nasty gutting. In the RTS the function we are interested in is at least {{{osThreadId}}}: with this function we can inspect current {{{OSThreadId}}} and communicate it out through an {{{MVar}}} or otherwise. So this is a feature request for an abstract type {{{OSThreadId}}} with instances of at least {{{Eq, Show}}} and a function {{{myOsThreadId :: IO OSThreadId}}}. Nice to have would be {{{osThreadId :: ThreadID -> IO OSThreadId}}} but not critical. If there is room for optimisation in GHC, functions like {{{sameOsThread :: ThreadId -> ThreadId -> IO Bool}}} would also be nice but again not critical. Not sure what to set in ticket meta-data so please change as appropriate. -- -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/10674#comment:1 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#10674: Expose OSThreadID and assorted functions from Haskell -------------------------------------+------------------------------------- Reporter: Fuuzetsu | Owner: Type: feature request | Status: new Priority: normal | Milestone: Component: Runtime System | Version: 7.10.1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Revisions: -------------------------------------+------------------------------------- Changes (by thomie): * cc: simonmar (added) * component: Compiler => Runtime System -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/10674#comment:2 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler
participants (1)
-
GHC