<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_iobuf_bytes(self, p, x, y):
 """Read raw bytes ``io_printf``'d into the ``IOBUF`` buffer on a specified core. This may be useful when the data contained in the ``IOBUF`` is not UTF-8 encoded text. See also: :py:meth:`.get_iobuf` which returns a decoded string rather than raw bytes. Returns ------- bytes The raw, undecoded string data in the buffer. """

        # The IOBUF data is stored in a linked-list of blocks of memory in
        # SDRAM. The size of each block is given in SV
        iobuf_size = self.read_struct_field("sv", "iobuf_size", x, y)

        # The first block in the list is given in the core's VCPU field
        address = self.read_vcpu_struct_field("iobuf", x, y, p)

        iobuf = b""

        while address:
            # The IOBUF data is proceeded by a header which gives the next
            # address and also the length of the string in the current buffer.
            iobuf_data = self.read(address, iobuf_size + 16, x, y)
            address, time, ms, length = struct.unpack("<4I", iobuf_data[:16])
            iobuf += iobuf_data[16:16 + length]

        return iobuf