code: func cgEscape(p string) string {
  	needPrefix := false
  
  	switch {
  	case strings.HasPrefix(p, "_"):
  		fallthrough
  	case strings.HasPrefix(p, "."):
  		fallthrough
  	case p == "notify_on_release":
  		fallthrough
  	case p == "release_agent":
  		fallthrough
  	case p == "tasks":
  		needPrefix = true
  	case strings.Contains(p, "."):
  		sp := strings.Split(p, ".")
  		if sp[0] == "cgroup" {
  			needPrefix = true
  		} else {
  			n := sp[0]
  			if checkHierarchy(n) {
  				needPrefix = true
  			}
  		}
  	}
  
  	if needPrefix {
  		return "_" + p
  	}
  
  	return p
  }
docs: // cgEscape implements very minimal escaping for names to be used as file names
  // in the cgroup tree: any name which might conflict with a kernel name or is
  // prefixed with '_' is prefixed with a '_'. That way, when reading cgroup
  // names it is sufficient to remove a single prefixing underscore if there is
  // one.