Technologies

From CRIU
Revision as of 09:34, 10 February 2015 by Xemul (talk | contribs) (→‎pb2dict.py)
Jump to navigation Jump to search

This page contains a list of technologies and tools that were developed while we did CRIU and that make sense outside of it. These tools are still maintained within the CRIU itself, but eventually they can be split out into a standalone project and CRIU will be fixed to use those as libraries/sub-tools.

Parasite code injection

This thing was split into a separate project called compel. Compel is an utility to execute code in foreign process address space. It is based on the same technology we use in CRIU to obtain some process-private data on dump. We don't currently maintain compel and it's quite out-dated, but still functional.

Managing protocol buffers objects

We have a Python module to convert google protocol buffers to python objects and back.

Unlike other projects to convert pb to python dict or json, our pb2dict does treat optional fields with empty repeated inside properly. It includes special support for custom field options to mark those needed to be treated in a special way. For example, you could include our opts.proto in your proto-file and use criu.* options to mark your fields, i.e.:

required uint64 blk_sigset = 5[(criu).hex = true];

See more examples in our protobuf/*.proto files.

It is also worth noting, that we have a unique number for all kinds of custom protobuf options(see Images#Notes_about_protobuf), so you don't have to worry that it might collide with others.