Skip to content

macOS Semaphore Cleanup#895

Open
ejohnstown wants to merge 1 commit intowolfSSL:masterfrom
ejohnstown:SEM
Open

macOS Semaphore Cleanup#895
ejohnstown wants to merge 1 commit intowolfSSL:masterfrom
ejohnstown:SEM

Conversation

@ejohnstown
Copy link
Contributor

@ejohnstown ejohnstown commented Mar 16, 2026

macOS uses GCD for threading and semaphores. The clients were using semaphore.h or on macOS dispatch.h. This wraps both APIs to remove a bunch of code guards.

  1. Add check to configure.ac for presence of dispatch.h.
  2. API wrapper checks the header flag from configure to load either dispatch.h or semaphore.h. The check is also the guard for which wrapper to use.
  3. Simplify all calls for semaphores into single function calls.

Resolves issue #893.

macOS uses GCD for threading and semaphores. The clients were using
semaphore.h or on macOS dispatch.h. This wraps both APIs to remove a
bunch of code guards.

1. Add check to configure.ac for presence of dispatch.h.
2. API wrapper checks the header flag from configure to load either
   dispatch.h or semaphore.h. The check is also the guard for which
   wrapper to use.
3. Simplify all calls for semaphores into single function calls.
Copilot AI review requested due to automatic review settings March 16, 2026 17:15
@ejohnstown ejohnstown self-assigned this Mar 16, 2026
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

@ejohnstown ejohnstown requested a review from Copilot March 16, 2026 18:30
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 3 out of 3 changed files in this pull request and generated 5 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

You can also share your feedback on Copilot code review. Take the survey.

Comment on lines +249 to +257
typedef struct {
dispatch_semaphore_t s;
} WOLFSSH_SEMAPHORE;

static inline
void wolfSSH_SEMAPHORE_Init(WOLFSSH_SEMAPHORE* s, unsigned int n)
{
s->s = dispatch_semaphore_create((long)n);
}
Comment on lines +281 to +302
typedef struct {
dispatch_semaphore_t s;
} WOLFSSH_SEMAPHORE;

static inline
void wolfSSH_SEMAPHORE_Init(WOLFSSH_SEMAPHORE* s, unsigned int n)
{
s->s = dispatch_semaphore_create((long)n);
}

static inline
void wolfSSH_SEMAPHORE_Release(WOLFSSH_SEMAPHORE* s)
{
dispatch_release(s->s);
}

static inline
void wolfSSH_SEMAPHORE_Wait(WOLFSSH_SEMAPHORE* s)
{
dispatch_semaphore_wait(s->s, DISPATCH_TIME_FOREVER);
}

Comment on lines +291 to +295
static inline
void wolfSSH_SEMAPHORE_Release(WOLFSSH_SEMAPHORE* s)
{
dispatch_release(s->s);
}
Comment on lines +297 to +301
static inline
void wolfSSH_SEMAPHORE_Wait(WOLFSSH_SEMAPHORE* s)
{
sem_wait(&s->s);
}
Comment on lines 345 to 350
/* capture window change signals */
static void WindowChangeSignal(int sig)
{
#if (defined(__OSX__) || defined(__APPLE__))
dispatch_semaphore_signal(windowSem);
#else
sem_post(&windowSem);
#endif
wolfSSH_SEMAPHORE_Post(&windowSem);
(void)sig;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants