arch:x86: add atomic_cmpxchg
arch:arm: add atomic_cmpxchg
arch:aarch64: add atomic_cmpxchg
cr-errno: initial commit

Signed-off-by: Ruslan Kuprieiev <kupruser@gmail.com>
util: set cr_errno to ESRCH if no PID dir in proc

Signed-off-by: Ruslan Kuprieiev <kupruser@gmail.com>
cr-restore: set cr_error to EEXIST if such pid already exists, v3

This is a very common error when using criu.

The problem here is that we need to somehow transfer cr_errno
from one process to another. I suggest using pipe to give
one end to children and read cr_errno on other after restore
is finished.

v2, Pavel suggested putting errno into shared task_entries.
v3. and he also suggested using cmpxchg

Signed-off-by: Ruslan Kuprieiev <kupruser@gmail.com>
cr-service: setup_opts_from_req: use single error exit point

Signed-off-by: Ruslan Kuprieiev <kupruser@gmail.com>
cr-service: set cr_errno to EBADRQC if set_opts_from_req fails

Signed-off-by: Ruslan Kuprieiev <kupruser@gmail.com>
service: add cr_errno to criu_resp and send cr_errno in it

Signed-off-by: Ruslan Kuprieiev <kupruser@gmail.com>
test: rpc: cr_errno, v3

Lets simulate some errors and check what
error will be returned by service.

v2, fix tests accordingly to new errorlist
v3, fix tests accordingly to new errorlist, again
libcriu: add cr_errno support