| ... | ... | @@ -532,6 +532,12 @@ const Serialized = struct { |
| 532 | 532 | parents: [node_storage_buffer_len]Node.Parent, |
| 533 | 533 | storage: [node_storage_buffer_len]Node.Storage, |
| 534 | 534 | map: [node_storage_buffer_len]Node.Index, |
| 535 | |
| 536 | parents_copy: [node_storage_buffer_len]Node.Parent, |
| 537 | storage_copy: [node_storage_buffer_len]Node.Storage, |
| 538 | ipc_metadata_copy: [node_storage_buffer_len]SavedMetadata, |
| 539 | |
| 540 | ipc_metadata: [node_storage_buffer_len]SavedMetadata, |
| 535 | 541 | }; |
| 536 | 542 | }; |
| 537 | 543 | |
| ... | ... | @@ -583,11 +589,6 @@ fn serialize(serialized_buffer: *Serialized.Buffer) Serialized { |
| 583 | 589 | }; |
| 584 | 590 | } |
| 585 | 591 | |
| 586 | | var parents_copy: [node_storage_buffer_len]Node.Parent = undefined; |
| 587 | | var storage_copy: [node_storage_buffer_len]Node.Storage = undefined; |
| 588 | | var ipc_metadata_copy: [node_storage_buffer_len]SavedMetadata = undefined; |
| 589 | | |
| 590 | | var ipc_metadata: [node_storage_buffer_len]SavedMetadata = undefined; |
| 591 | 592 | var ipc_metadata_len: u16 = 0; |
| 592 | 593 | |
| 593 | 594 | const SavedMetadata = struct { |
| ... | ... | @@ -612,6 +613,9 @@ const SavedMetadata = struct { |
| 612 | 613 | }; |
| 613 | 614 | |
| 614 | 615 | fn serializeIpc(start_serialized_len: usize, serialized_buffer: *Serialized.Buffer) usize { |
| 616 | const ipc_metadata_copy = &serialized_buffer.ipc_metadata_copy; |
| 617 | const ipc_metadata = &serialized_buffer.ipc_metadata; |
| 618 | |
| 615 | 619 | var serialized_len = start_serialized_len; |
| 616 | 620 | var pipe_buf: [2 * 4096]u8 align(4) = undefined; |
| 617 | 621 | |
| ... | ... | @@ -707,8 +711,8 @@ fn serializeIpc(start_serialized_len: usize, serialized_buffer: *Serialized.Buff |
| 707 | 711 | } |
| 708 | 712 | |
| 709 | 713 | // Save a copy in case any pipes are empty on the next update. |
| 710 | | @memcpy(parents_copy[0..serialized_len], serialized_buffer.parents[0..serialized_len]); |
| 711 | | @memcpy(storage_copy[0..serialized_len], serialized_buffer.storage[0..serialized_len]); |
| 714 | @memcpy(serialized_buffer.parents_copy[0..serialized_len], serialized_buffer.parents[0..serialized_len]); |
| 715 | @memcpy(serialized_buffer.storage_copy[0..serialized_len], serialized_buffer.storage[0..serialized_len]); |
| 712 | 716 | @memcpy(ipc_metadata_copy[0..ipc_metadata_len], ipc_metadata[0..ipc_metadata_len]); |
| 713 | 717 | |
| 714 | 718 | return serialized_len; |
| ... | ... | @@ -737,6 +741,10 @@ fn useSavedIpcData( |
| 737 | 741 | main_index: usize, |
| 738 | 742 | old_metadata: []const SavedMetadata, |
| 739 | 743 | ) usize { |
| 744 | const parents_copy = &serialized_buffer.parents_copy; |
| 745 | const storage_copy = &serialized_buffer.storage_copy; |
| 746 | const ipc_metadata = &serialized_buffer.ipc_metadata; |
| 747 | |
| 740 | 748 | const ipc_fd = main_storage.getIpcFd().?; |
| 741 | 749 | const saved_metadata = findOld(ipc_fd, old_metadata) orelse { |
| 742 | 750 | main_storage.completed_count = 0; |