$\require{begingroup}\begingroup$The following is Exercise 22.C from Van Rooij, Schikhof: A Second Course on Real Functions.
For any class $\mathcal F$ of continuous functions on $[a,b]$ one can define $\mathcal F$-integrability by calling a function $f\colon{[a,b]}\to{\mathbb R}$ $\mathcal F$-integrable if for every $\varepsilon>0$ $f$ has upper and lower functions $u,v\in\mathcal F$ such that $$\newcommand{\rozd}[3]{\left[{#3}\right]_{#1}^{#2}}\rozd abu \le \rozd abv + \varepsilon.$$ The class of all continuous functions on $[a,b]$ gives us the Perron integral, the class of all absolutely continuous functions defines the Lebesgue integral.
Prove now that each of the following classes of functions leads to the Riemann integral: the class of all piecewise linear continuous functions; the class of all functions that have continuous derivatives.
In the above, $\rozd xyu$ denotes $u(y)-u(x)$. By lower and upper function we mean $D^+v \le f \le D^-u$, where $D^+v$ and $D^+u$ denotes the lower and upper derivative, i.e., $$D^+v(x) = \limsup_{y\to x} \frac{v(y)-v(x)}{y-x} \qquad D^-u(x) = \liminf_{y\to x} \frac{u(y)-u(x)}{y-x}.$$ Some text calls this minor and major function. (For example, Gordon: The integrals of Lebesgue, Denjoy, Perron, and Henstock.)
The intention of this exercise is to show that similar construction which can lead to Perron integral and Lebesgue integral. I'll be grateful for comments on my attempt posted as an answer and also for alternative solutions. And also for some references where this can be found.$\endgroup$
$\require{begingroup}\begingroup$Suppose that we have $$g\le f \le h,$$ where $g$ is upper semicontinuous and $h$ is lower semicontinuous and both $g$, $h$ are Lebesgue integrable. If we put $$v(x) = \int_a^x g(s) \;\mathrm{d} s, \qquad u(x) = \int_a^x h(s) \;\mathrm{d} s$$ then from Exercise 22.A we have $D^+ v\le g$ and $D^-u \ge h$, hence $$D^+v \le f \le D^-u.$$
On the other hand, if $D^+v$ and $D^-u$ are Riemann integrable, then we know from Theorem 15.3 that $$v(x) = \int_a^x D^+v(s) \;\mathrm{d} s, \qquad u(x) = \int_a^x D^-u(s) \;\mathrm{d} s.$$
In fact, here we will be using very simple functions in place of $g$, $h$, $u$, $v$; so the above can be checked for these functions using direct computation. But since we already know more general results, I have simply mentioned them instead of including the computations.
The basic idea is to use a correspondence between:
$\mathcal F$-integrable function is Riemann integrable. Notice that in both cases we have that $D^+v$ and $D^-u$ are Riemann integrable. (In fact, they are continuous with the exception of at most finitely many points.) So we have $$\newcommand{\rozd}[3]{\left[{#3}\right]_{#1}^{#2}}\rozd abv = \int_a^b D^+v \le \underline{\int_a^b} f(t) \;\mathrm{d} t \le \overline{\int_a^b} f(t) \;\mathrm{d} t \le \int_a^b D^-u = \rozd abu.$$ (Here $\underline\int$ and $\overline\int$ denotes lower and upper Riemann integral.)
From the fact that $\sup\{\rozd abv\}=\inf\{\rozd abu\}$ (where supremum and infimum are taken only over lower and upper functions from $\mathcal F$, respectively) we get that $f$ is Riemann integrable.
Riemann-integrable function is $\mathcal F$-integrable. If a function is Riemann integrable, we can approximate it from below and from above by step functions $g$ and $h$ in such way that $g\le f\le h$ and the function $g$ and $y$ can be made arbitrarily close in the sense $$\int_a^b (h(t)-g(t)) \;\mathrm{d} t<\varepsilon.$$ Notice that we can arbitrarily change values in the points belonging to partition, since we assume that $h(t) \ge \sup\limits_{t\in[a_i,a_{i+1}]} f(t)$ on each interval from the partition (and similarly for $g$). So we can also assume that $g$ and $h$ are upper and lower semicontinuous, respectively. Therefore we get $$D^+v \le g \le f \le h \le D^-u$$ for $v$ and $u$ defined as above. Moreover, $v$ and $u$ are piecewise linear and we have $$\int_a^b g(t) \;\mathrm{d} t=\rozd abv \qquad \int_a^b h(t) \;\mathrm{d} t=\rozd abu.$$ So in this way we get the $f$ is $\mathcal F$-integrable if $\mathcal F$ is the class of piecewise linear functions.
For $C^1$-functions basically the same argument works, but we need to show that Riemann integrable function $f$ can be approximated by continuous functions $h$ and $g$. To achieve this we simply modify the step functions by adding small enough triangles. In this way we get $g$ and $h$ which are piecewise linear continuous functions and their indefinite integrals $u$ and $v$ are $C^1$.
Remark. We could get in a similar way $C^\infty$-functions. Instead of a small triangle we would use some kind of mollifier.$\endgroup$