[CRIU] [PATCH 1/2] libcriu: Add ability to request for notifications from service

Andrew Vagin avagin at parallels.com
Thu Jun 26 01:31:20 PDT 2014


On Thu, Jun 26, 2014 at 12:11:30PM +0400, Pavel Emelyanov wrote:
> On 06/26/2014 12:05 PM, Andrew Vagin wrote:
> > On Wed, Jun 25, 2014 at 07:36:14PM +0400, Pavel Emelyanov wrote:
> >> This is achieved by supplying the callback. Every time a notification
> >> arrives the callback is called. Return value of 0 means continue,
> >> any other value aborst the request and the value is reported back
> >> to the caller (from criu_dump/criu_restore calls).
> >>
> >> Signed-off-by: Pavel Emelyanov <xemul at parallels.com>
> >> ---
> >>  lib/criu.c | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++------
> >>  lib/criu.h |  1 +
> >>  2 files changed, 52 insertions(+), 6 deletions(-)
> >>
> >> diff --git a/lib/criu.c b/lib/criu.c
> >> index 4b1be8a..a827671 100644
> >> --- a/lib/criu.c
> >> +++ b/lib/criu.c
> >> @@ -19,6 +19,7 @@ const char *criu_lib_version = CRIU_VERSION;
> >>  
> >>  static char *service_address = CR_DEFAULT_SERVICE_ADDRESS;
> >>  static CriuOpts *opts;
> >> +static int (*notify)(char *action);
> >>  static int saved_errno;
> >>  
> >>  void criu_set_service_address(char *path)
> >> @@ -31,8 +32,10 @@ void criu_set_service_address(char *path)
> >>  
> >>  int criu_init_opts(void)
> >>  {
> >> -	if (opts)
> >> +	if (opts) {
> >> +		notify = NULL;
> >>  		criu_opts__free_unpacked(opts, NULL);
> >> +	}
> >>  
> >>  	opts = malloc(sizeof(CriuOpts));
> >>  	if (opts == NULL) {
> >> @@ -44,6 +47,13 @@ int criu_init_opts(void)
> >>  	return 0;
> >>  }
> >>  
> >> +void criu_set_notify(int (*cb)(char *action))
> > 
> > I wourld prefer to get pid in callbacks.
> 
> So would I. Any ideas how to make this in non-ugly manner? Pid is
> only available in one action.

It's available for all restore actions, isn't it?

post-restore, setup-namespaces, network-unlock
> 
> Thanks,
> Pavel
> 
> 


More information about the CRIU mailing list