|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v3 7/8] golang/xenlight: Notify xenlight of SIGCHLD
> // Context represents a libxl_ctx.
> type Context struct {
> - ctx *C.libxl_ctx
> - logger *C.xentoollog_logger_stdiostream
> + ctx *C.libxl_ctx
> + logger *C.xentoollog_logger_stdiostream
> + sigchld chan os.Signal
> + sigchldDone chan bool
It's preferred to use `chan struct{}` for this pattern; it makes it
clear that the data sent over the channel has no meaning, and is only
intended to be used for synchronization.
> + // ...and arrange to keep that promise.
> + ctx.sigchld = make(chan os.Signal, 2)
> + ctx.sigchldDone = make(chan bool, 1)
> + signal.Notify(ctx.sigchld, syscall.SIGCHLD)
> +
> + go sigchldHandler(ctx)
It could be useful to add a comment here that explains the lifetime of
this goroutine, i.e. it returns when the context is Close()'d.
> // Close closes the Context.
> func (ctx *Context) Close() error {
> + // Tell our SIGCHLD notifier to shut down, and wait for it to exit
> + // before we free the context.
> + if ctx.sigchld == nil {
Shouldn't this be `if ctx.sigchld != nil`?
-NR
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |