| # Copyright 2023 The ChromiumOS Authors | |
| # Use of this source code is governed by a BSD-style license that can be | |
| # found in the LICENSE file. | |
| description "Job to start ARC++ services to share media files like MyFiles" | |
| author "chromium-os-dev@chromium.org" | |
| stop on stop-arc-instance or stopping ui | |
| # Default score for Android system processes. | |
| oom score -100 | |
| # Export for arc-myfiles* and arc-removable-media-full. | |
| import IS_ANDROID_CONTAINER_RVC | |
| export IS_ANDROID_CONTAINER_RVC | |
| import MEDIA_PROVIDER_UID | |
| export MEDIA_PROVIDER_UID | |
| pre-start script | |
| MOUNT_POINTS="/run/arc/media/MyFiles \ | |
| /run/arc/media/MyFiles-default \ | |
| /run/arc/media/MyFiles-read \ | |
| /run/arc/media/MyFiles-write \ | |
| /run/arc/media/removable \ | |
| /run/arc/media/removable-default \ | |
| /run/arc/media/removable-read \ | |
| /run/arc/media/removable-write" | |
| if [ "${IS_ANDROID_CONTAINER_RVC}" = "true" ]; then | |
| # Verify input string provided by chronos. See crbug/1414511. | |
| if ! expr "${MEDIA_PROVIDER_UID}" : "^[0-9]\+$" > /dev/null; then | |
| logger -t "${UPSTART_JOB}" \ | |
| "Invalid MEDIA_PROVIDER_UID: ${MEDIA_PROVIDER_UID}" | |
| exit 1 | |
| fi | |
| MOUNT_POINTS="${MOUNT_POINTS} \ | |
| /run/arc/media/MyFiles-full \ | |
| /run/arc/media/removable-full" | |
| fi | |
| # Wait for the mount points to appear up to 5 seconds. | |
| elapsed_millisecs=0 | |
| for mount_point in ${MOUNT_POINTS}; do | |
| while ! mountpoint -q "${mount_point}"; do | |
| if status | grep -q stop; then | |
| exit 0 | |
| fi | |
| if [ "${elapsed_millisecs}" -ge 5000 ]; then | |
| logger -t "${UPSTART_JOB}" "Timed out while waiting for ${mount_point}" | |
| exit 1 | |
| fi | |
| sleep 0.1 | |
| elapsed_millisecs=$((elapsed_millisecs+10)) | |
| done | |
| done | |
| end script |