docs: def GetFileSystems():
    """Make syscalls to get the mounted filesystems.
  
    Returns:
      A list of Struct objects.
  
    Based on the information for getfsstat
      http://developer.apple.com/library/mac/#documentation/Darwin/
        Reference/ManPages/man2/getfsstat.2.html
    """
    version = OSXVersion()
    major, minor = version.VersionAsMajorMinor()
  
    libc = ctypes.cdll.LoadLibrary(ctypes.util.find_library("c"))
  
    if major <= 10 and minor <= 5:
      use_64 = False
      fs_struct = StatFSStruct
    else:
      use_64 = True
      fs_struct = StatFS64Struct
  
    # Get max 20 file systems.
    struct_size = fs_struct.GetSize()
    buf_size = struct_size * 20
  
    cbuf = ctypes.create_string_buffer(buf_size)
  
    if use_64:
      # MNT_NOWAIT = 2 - don't ask the filesystems, just return cache.
      ret = libc.getfsstat64(ctypes.byref(cbuf), buf_size, 2)
    else:
      ret = libc.getfsstat(ctypes.byref(cbuf), buf_size, 2)
  
    if ret == 0:
      logging.debug("getfsstat failed err: %s", ret)
      return []
    return ParseFileSystemsStruct(fs_struct, ret, cbuf)