Menu

#1 use sem_open instead of sem_init

closed-invalid
nobody
None
5
2011-04-02
2010-01-23
No

sem_init is unsupported on mac os x, with perror reporting "functionality not implemented" sem_open works on both linux and mac os x.

Discussion

  • James John Walsh

    diff for using sem_open

     
  • Nick Copeland

    Nick Copeland - 2010-01-23

    Hi James,

    Many thanks for the tip - I don't own a mac so have not tested any of this on OSX.

    Now you are also asking to support something that I don't really want to do, a Mac port - bristol works on Linux and I am quite happy for compatibility to remain a problem. Don't take me wrong here, bristol could be quite easily ported over it's just that with bristol being linux only I get a lot less hassle from the OEM than I would do if the app went mainstream. There are a few other threads on the same issue.

    So the next question is why are you compiling on OSX and how far have you got? There are other issues I think related to thread management and scheduler priorities that also would have to be addressed, as well as including things like portaudio rather than just Jack Audio/Midi to really be OSX compliant. I have not even considered the work to include those interfaces.

    Kind regards, nick.

     
  • Nick Copeland

    Nick Copeland - 2010-01-23

    Oops, I meant coreaudio, no PA.

    And there are other issues that I don't mind discussing such as the fact that even using the semaphore is very, very frowned up when working with Jack. I have an open enhancement to either implement a lock free message queue or any other way (there are several, the message queue is actually not the best option for bristol) to not even have to use the semaphore in the first place.

    That is scheduled for somewhere in the 0.50 stream and will include features like sample accurate voicing, also not a current feature.

    Kind regards, nick.

     
  • James John Walsh

    I don't have a mac either, linux user myself, but a friend of mine does and I spent most of last night troubleshooting with him, in the end we got it to successfully compile.

    There are more changes than this one, mostly system wide includes that are included by default on linux that have to be added to the header files in os x, they are in the same location in linux too so it doesn't effect linux. Will send another patch for that shortly, only one or two lines.

    You're right that the audio system was a pain in the ass, but I did not deal with coreaudio at all, there is a jack2 port for os x that I had the user install. And the only not so clean modification I made that I will likely have to re-do is that even when configured to compile without alsa and only jack support, it still wants some alsa headers, I removed that but will make a cleaner patch later on.

    By the end of the night the only problem was that when run opening a midi port on jack was failing, at present i'm highly suspicious that that is actually the jack2 os x port failing in that regard, but I'm still investigating it.

    Do you have a subversion or git repository? Since if you do I can use git with it to keep up to date with your changes and have clean and easy to apply patches when what I'm doing is ready. I try to keep individual changesets small and limited in scope to a single part. :)

    And I understand not wanting to have to support os x in any official capacity, but if it can be done without too much effort a simple "os x not supported, but some people have managed to get it going" in the docs would suffice yes?

    So far as legal issues are concerned, the algorithms even if patented would have ran out of patent protection years ago, the worst they could try is trademark infringement which I highly doubt they'd try.

    I just like to help people out, and it becomes a lot easier sending patches upstream than maintaining them yourself.

    Had a look at the feature request section and see what you mean about potential realtime threading problems in the os x thread. After Jack midi works I'll have a look at getting that going.

     
  • Nick Copeland

    Nick Copeland - 2010-01-24

    Hi James,

    The legal issues are not really patenting, it's interface licensing for example. PropellerHeads closed down a freeware 303 emulator just based on stating they had bought the right to its user interface from Roland for digital purposes. I have had other manufacturers contact me regarding what I do (this is documented elsewhere) which have always been dealt by accepting changes, disclaimers, references. I honestly think that if the platform had been other than linux the action would have been taken further.

    I am happy to add in changes to get the code more portable. I don't have git or subversion or anything.

    Regards, nick

     
  • Nick Copeland

    Nick Copeland - 2010-01-27

    Hi James,

    A couple of things. Firstly, sem_open on Linux appears to require root privileges, that is not something that I really want - the current PAM security access can grant user permissions to do some stuff that would otherwise be reserved for root, things like gaining real time scheduling privileges. At the moment it is under a compilation flag however I could add in a compilation flag and then a run time option for unix.

    Secondly, if you do want patches for OS-X to do into the mainstream let me know. It is perhaps also the time I invested in a MacBook and just made it work. How did you get on with Jack MIDI? Can you get Jack MIDI from attached hardware into bristol?

    Kind regards, nick.

     
  • Nick Copeland

    Nick Copeland - 2011-03-19
    • status: open --> pending-invalid
     
  • Nick Copeland

    Nick Copeland - 2011-03-19

    Closing. Removed dependencies on semaphores.

     
  • SourceForge Robot

    This Tracker item was closed automatically by the system. It was
    previously set to a Pending status, and the original submitter
    did not respond within 14 days (the time period specified by
    the administrator of this Tracker).

     
  • SourceForge Robot

    • status: pending-invalid --> closed-invalid
     

Log in to post a comment.