code: def get_mount_points():
      
      def decode_path(path):
          # Replace tab, space, newline, and backslash escapes with actual characters.
          # According to man 5 fstab, only tab and space escaped, but Linux escapes more:
          # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/fs/proc_namespace.c?id=12a54b150fb5b6c2f3da932dc0e665355f8a5a48#n85
          return path.replace(br"\011", b"\011").replace(br"\040", b"\040").replace(br"\012", b"\012").replace(br"\134", b"\134")
  
      with open("/proc/self/mounts", "rb") as mounts:
          # The format of this file is the same as of /etc/fstab (cf. man 5 fstab)
          for mount in mounts:
              source, target, fstype, options, unused1, unused2 = mount.split(b" ")
              options = set(options.split(b","))
              yield (decode_path(source), decode_path(target), fstype, options)
docs: Get all current mount points of the system.
      Changes to the mount points during iteration may be reflected in the result.
      @return a generator of (source, target, fstype, options),
      where options is a list of bytes instances, and the others are bytes instances
      (this avoids encoding problems with mount points with problematic characters).