Lines Matching refs:run_buf
649 static inline void run_pack_s64(u8 *run_buf, u8 size, s64 v)
655 run_buf[7] = p[0];
658 run_buf[6] = p[1];
661 run_buf[5] = p[2];
664 run_buf[4] = p[3];
667 run_buf[3] = p[4];
670 run_buf[2] = p[5];
673 run_buf[1] = p[6];
676 run_buf[0] = p[7];
681 static inline s64 run_unpack_s64(const u8 *run_buf, u8 size, s64 v)
687 p[0] = run_buf[7];
690 p[1] = run_buf[6];
693 p[2] = run_buf[5];
696 p[3] = run_buf[4];
699 p[4] = run_buf[3];
702 p[5] = run_buf[2];
705 p[6] = run_buf[1];
708 p[7] = run_buf[0];
744 static inline void run_pack_s64(u8 *run_buf, u8 size, s64 v)
748 /* memcpy( run_buf, &v, size); Is it faster? */
751 run_buf[7] = p[7];
754 run_buf[6] = p[6];
757 run_buf[5] = p[5];
760 run_buf[4] = p[4];
763 run_buf[3] = p[3];
766 run_buf[2] = p[2];
769 run_buf[1] = p[1];
772 run_buf[0] = p[0];
777 static inline s64 run_unpack_s64(const u8 *run_buf, u8 size, s64 v)
781 /* memcpy( &v, run_buf, size); Is it faster? */
784 p[7] = run_buf[7];
787 p[6] = run_buf[6];
790 p[5] = run_buf[5];
793 p[4] = run_buf[4];
796 p[3] = run_buf[3];
799 p[2] = run_buf[2];
802 p[1] = run_buf[1];
805 p[0] = run_buf[0];
815 * packed_size - How much bytes we have used run_buf.
817 int run_pack(const struct runs_tree *run, CLST svcn, CLST len, u8 *run_buf,
881 if (run_buf) {
883 run_buf[0] = ((u8)(size_size | (offset_size << 4)));
884 run_buf += 1;
887 run_pack_s64(run_buf, size_size, len);
889 run_buf += size_size;
891 run_pack_s64(run_buf, offset_size, dlcn);
892 run_buf += offset_size;
909 if (run_buf)
910 run_buf[0] = 0;
916 * run_unpack - Unpack packed runs from @run_buf.
921 CLST svcn, CLST evcn, CLST vcn, const u8 *run_buf,
938 run_0 = run_buf;
939 run_last = run_buf + run_buf_size;
945 while (run_buf < run_last) {
947 u8 size_size = *run_buf & 0xF;
949 u8 offset_size = *run_buf++ >> 4;
965 len = run_unpack_s64(run_buf, size_size, 0);
967 run_buf += size_size;
978 dlcn = (run_buf[offset_size - 1] & 0x80) ? (s64)-1 : 0;
979 dlcn = run_unpack_s64(run_buf, offset_size, dlcn);
981 run_buf += offset_size;
1039 return run_buf - run_0;
1044 * run_unpack_ex - Unpack packed runs from "run_buf".
1051 CLST svcn, CLST evcn, CLST vcn, const u8 *run_buf,
1060 ret = run_unpack(run, sbi, ino, svcn, evcn, vcn, run_buf, run_buf_size);
1117 int run_get_highest_vcn(CLST vcn, const u8 *run_buf, u64 *highest_vcn)
1122 while ((size_size = *run_buf & 0xF)) {
1123 u8 offset_size = *run_buf++ >> 4;
1129 len = run_unpack_s64(run_buf, size_size, 0);
1133 run_buf += size_size + offset_size;