aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2015-12-03 18:53:01 +0200
committerLudovic Courtès <ludo@gnu.org>2015-12-03 19:09:53 +0200
commitd203d3d4cb3d83beaadaaef6c279c3d84ac142f7 (patch)
tree7e34150165fc158ed0de5f3f70f7b2c49b0e1edf
parentdf7393b93c3c1ad764702266016a3b640fd7fa93 (diff)
downloadguix-d203d3d4cb3d83beaadaaef6c279c3d84ac142f7.tar
guix-d203d3d4cb3d83beaadaaef6c279c3d84ac142f7.tar.gz
store: Update to the new daemon protocol.
* guix/store.scm (%protocol-version): Set minor to 14. (open-connection): Add 'cpu-affinity' parameter and honor it.
-rw-r--r--guix/store.scm20
1 files changed, 13 insertions, 7 deletions
diff --git a/guix/store.scm b/guix/store.scm
index 8413d1f452..89f5df052a 100644
--- a/guix/store.scm
+++ b/guix/store.scm
@@ -129,7 +129,7 @@
direct-store-path
log-file))
-(define %protocol-version #x10c)
+(define %protocol-version #x10e)
(define %worker-magic-1 #x6e697863) ; "nixc"
(define %worker-magic-2 #x6478696f) ; "dxio"
@@ -328,11 +328,13 @@
(status nix-protocol-error-status))
(define* (open-connection #:optional (file (%daemon-socket-file))
- #:key (reserve-space? #t))
+ #:key (reserve-space? #t) cpu-affinity)
"Connect to the daemon over the Unix-domain socket at FILE. When
-RESERVE-SPACE? is true, instruct it to reserve a little bit of extra
-space on the file system so that the garbage collector can still
-operate, should the disk become full. Return a server object."
+RESERVE-SPACE? is true, instruct it to reserve a little bit of extra space on
+the file system so that the garbage collector can still operate, should the
+disk become full. When CPU-AFFINITY is true, it must be an integer
+corresponding to an OS-level CPU number to which the daemon's worker process
+for this connection will be pinned. Return a server object."
(let ((s (with-fluids ((%default-port-encoding #f))
;; This trick allows use of the `scm_c_read' optimization.
(socket PF_UNIX SOCK_STREAM 0)))
@@ -355,8 +357,12 @@ operate, should the disk become full. Return a server object."
(protocol-major v))
(begin
(write-int %protocol-version s)
- (if (>= (protocol-minor v) 11)
- (write-int (if reserve-space? 1 0) s))
+ (when (>= (protocol-minor v) 14)
+ (write-int (if cpu-affinity 1 0) s)
+ (when cpu-affinity
+ (write-int cpu-affinity s)))
+ (when (>= (protocol-minor v) 11)
+ (write-int (if reserve-space? 1 0) s))
(let ((s (%make-nix-server s
(protocol-major v)
(protocol-minor v)