code: func (m *ManagerImpl) callPreStartContainerIfNeeded(podUID, contName, resource string) error {
  	m.mutex.Lock()
  	eI, ok := m.endpoints[resource]
  	if !ok {
  		m.mutex.Unlock()
  		return fmt.Errorf("endpoint not found in cache for a registered resource: %s", resource)
  	}
  
  	if eI.opts == nil || !eI.opts.PreStartRequired {
  		m.mutex.Unlock()
  		klog.V(4).Infof("Plugin options indicate to skip PreStartContainer for resource: %s", resource)
  		return nil
  	}
  
  	devices := m.podDevices.containerDevices(podUID, contName, resource)
  	if devices == nil {
  		m.mutex.Unlock()
  		return fmt.Errorf("no devices found allocated in local cache for pod %s, container %s, resource %s", podUID, contName, resource)
  	}
  
  	m.mutex.Unlock()
  	devs := devices.UnsortedList()
  	klog.V(4).Infof("Issuing an PreStartContainer call for container, %s, of pod %s", contName, podUID)
  	_, err := eI.e.preStartContainer(devs)
  	if err != nil {
  		return fmt.Errorf("device plugin PreStartContainer rpc failed with err: %v", err)
  	}
  	// TODO: Add metrics support for init RPC
  	return nil
  }
docs: // callPreStartContainerIfNeeded issues PreStartContainer grpc call for device plugin resource
  // with PreStartRequired option set.