Merge branch 'master' of git://git.qubes-os.org/marmarek/core

This commit is contained in:
Joanna Rutkowska 2012-12-12 17:29:00 +01:00
commit 64e91005b7
6 changed files with 90 additions and 18 deletions

View File

@ -46,24 +46,31 @@ Requires: xen-hvm
Requires: createrepo Requires: createrepo
Requires: gnome-packagekit Requires: gnome-packagekit
Requires: cronie Requires: cronie
%define _builddir %(pwd)/dom0 %define _builddir %(pwd)
%description %description
The Qubes core files for installation on Dom0. The Qubes core files for installation on Dom0.
%prep
# we operate on the current directory, so no need to unpack anything
# symlink is to generate useful debuginfo packages
rm -f %{name}-%{version}
ln -sf . %{name}-%{version}
%setup -T -D
%build %build
python -m compileall qvm-core qmemman python -m compileall dom0/qvm-core dom0/qmemman
python -O -m compileall qvm-core qmemman python -O -m compileall dom0/qvm-core dom0/qmemman
make -C restore for dir in dom0/restore dom0/qubes_rpc misc; do
make -C qubes_rpc (cd $dir; make)
make -C ../qubes_rpc done
make -C ../u2mfn (cd vchan; make -f Makefile.linux)
make -C ../vchan -f Makefile.linux (cd qrexec; make)
make -C ../qrexec
make -C ../misc
%install %install
cd dom0
mkdir -p $RPM_BUILD_ROOT/etc/init.d mkdir -p $RPM_BUILD_ROOT/etc/init.d
cp init.d/qubes_core $RPM_BUILD_ROOT/etc/init.d/ cp init.d/qubes_core $RPM_BUILD_ROOT/etc/init.d/
cp init.d/qubes_netvm $RPM_BUILD_ROOT/etc/init.d/ cp init.d/qubes_netvm $RPM_BUILD_ROOT/etc/init.d/
@ -286,6 +293,7 @@ mv -f /lib/udev/rules.d/69-xorg-vmmouse.rules /var/lib/qubes/removed-udev-script
%clean %clean
rm -rf $RPM_BUILD_ROOT rm -rf $RPM_BUILD_ROOT
rm -f %{name}-%{version}
%pre %pre
if ! grep -q ^qubes: /etc/group ; then if ! grep -q ^qubes: /etc/group ; then

View File

@ -42,9 +42,16 @@ BuildRequires: xen-devel
%description %description
The Qubes core libraries for installation inside a Qubes Dom0 and VM. The Qubes core libraries for installation inside a Qubes Dom0 and VM.
%prep
# we operate on the current directory, so no need to unpack anything
# symlink is to generate useful debuginfo packages
rm -f %{name}-%{version}
ln -sf . %{name}-%{version}
%setup -T -D
%build %build
make -C u2mfn (cd u2mfn; make)
make -C vchan -f Makefile.linux (cd vchan; make -f Makefile.linux)
%install %install
install -D -m 0644 vchan/libvchan.h $RPM_BUILD_ROOT/usr/include/libvchan.h install -D -m 0644 vchan/libvchan.h $RPM_BUILD_ROOT/usr/include/libvchan.h
@ -54,6 +61,10 @@ install -D -m 0644 u2mfn/u2mfn-kernel.h $RPM_BUILD_ROOT/usr/include/u2mfn-kernel
install -D vchan/libvchan.so $RPM_BUILD_ROOT/%{_libdir}/libvchan.so install -D vchan/libvchan.so $RPM_BUILD_ROOT/%{_libdir}/libvchan.so
install -D u2mfn/libu2mfn.so $RPM_BUILD_ROOT/%{_libdir}/libu2mfn.so install -D u2mfn/libu2mfn.so $RPM_BUILD_ROOT/%{_libdir}/libu2mfn.so
%clean
rm -rf $RPM_BUILD_ROOT
rm -f %{name}-%{version}
%files %files
%{_libdir}/libvchan.so %{_libdir}/libvchan.so
%{_libdir}/libu2mfn.so %{_libdir}/libu2mfn.so

View File

@ -56,12 +56,19 @@ BuildRequires: xen-devel
%description %description
The Qubes core files for installation inside a Qubes VM. The Qubes core files for installation inside a Qubes VM.
%prep
# we operate on the current directory, so no need to unpack anything
# symlink is to generate useful debuginfo packages
rm -f %{name}-%{version}
ln -sf . %{name}-%{version}
%setup -T -D
%build %build
make -C u2mfn (cd vchan; make -f Makefile.linux)
make -C vchan -f Makefile.linux (cd qrexec; make)
make -C misc for dir in qubes_rpc misc; do
make -C qubes_rpc (cd $dir; make)
make -C qrexec done
%pre %pre
@ -358,6 +365,7 @@ fi
%clean %clean
rm -rf $RPM_BUILD_ROOT rm -rf $RPM_BUILD_ROOT
rm -f %{name}-%{version}
%files %files
%defattr(-,root,root,-) %defattr(-,root,root,-)

View File

@ -206,6 +206,49 @@ static int server_interface_init(struct libvchan *ctrl, int devno)
ctrl->wr_ring_size = sizeof(ctrl->ring->buf_##dir1); \ ctrl->wr_ring_size = sizeof(ctrl->ring->buf_##dir1); \
ctrl->rd_ring_size = sizeof(ctrl->ring->buf_##dir2) ctrl->rd_ring_size = sizeof(ctrl->ring->buf_##dir2)
/**
Run in AppVM (any domain).
Release resources used by vchan link. Should be used after
libvchan_close() to clean connection shutdown, but can be used alone in
recovery case.
\param ctrl connection to cleanup
\returns -1 on failure (errno for details), 0 on success
*/
int libvchan_cleanup(struct libvchan *ctrl)
{
if (!ctrl)
return 0;
if (!ctrl->is_server)
return 0;
/* do not wait flush remaining queue to allow use libvchan_cleanup for
* recovery situation. If someone want clean close, should call
* libvchan_close() first.
*/
#if 0
if (!ctrl->ring->server_closed)
libvchan_close(ctrl);
#endif
if (xc_evtchn_unbind(ctrl->evfd, ctrl->evport) < 0)
return -1;
xc_evtchn_close(ctrl->evfd);
#ifdef QREXEC_RING_V2
/* not implemented yet, need to store gntmem_handle from ring_init somewhere */
assert(0);
/* in case of disabled assertions */
errno = EINVAL;
return -1;
#else /* QREXEC_RING_V2 */
#ifdef CONFIG_STUBDOM
free(ctrl->ring);
#else /* CONFIG_STUBDOM */
munmap(ctrl->ring, 4096);
/* FIXME: leak of u2mfn_fd, check u2mfnlib.c */
#endif /* CONFIG_STUBDOM */
#endif /* QREXEC_RING_V2 */
free(ctrl);
return 0;
}
/** /**
Run in AppVM (any domain). Run in AppVM (any domain).
Sleeps until the connection is established. (unless in stubdom) Sleeps until the connection is established. (unless in stubdom)

View File

@ -88,4 +88,6 @@ int libvchan_is_eof(struct libvchan *ctrl);
int libvchan_data_ready(struct libvchan *ctrl); int libvchan_data_ready(struct libvchan *ctrl);
int libvchan_buffer_space(struct libvchan *ctrl); int libvchan_buffer_space(struct libvchan *ctrl);
int libvchan_cleanup(struct libvchan *ctrl);
#endif /* _LIBVCHAN_H */ #endif /* _LIBVCHAN_H */

View File

@ -1 +1 @@
2.1.0 2.1.1